像对齐这种问题与硬件关联的比较紧密。而且一般常识也知道,CPU 和 内存之间还有好几层缓存呢,缓存涉及命中的问题,就有很多缓存算法(都由硬件直接实现了)。一般操作系统还要提供虚拟内存之类的支持。在硬件上说是比较复杂的,要是专门学的话,一般得学点 MMU 什么的吧。
把硬件的复杂性掩盖后,就来到软件的层次。可以这么理解,访问一个字节,二个字节,四个字节分别用的都是不同的指令。本身它们的读写速度就有可能是不一样的,这就是为什么一般来说能用 int 的就别用别的。因为硬件一般会针对 int 有特别的优化。
CPU 的寻址方法是一定的,跟你写没写齐没关系,你下达的指令只是相当于“到这个位置,读这么多字节”。之后就得靠 CPU 解释这些指令。要想弄清楚指令周期什么的,得稍微了解点 CPU 的工作原理,和指令的解析方式。总之对齐几乎是个常识,而且就算你自己不了解,编译器也总会帮你优化。好的算法往往不都要有一些前提不是,比如二分法只能用于有序序列一样。不管你学什么知识,发现几乎就不研究不对齐的情况。不是不对齐不能干,是你不对齐干什么呢?