计组—数据存储和排列
1.关于“大端存储”和“小端存储” 若一个数据字长大于单个机器字长,则需将其分为多个字节并匹配对应地址。此处引用王道书的例子,32位的计算机中一个int型变量的机器数为01 23 45 67H,那么最高有效字节MSB就是01H,最低有效字节LSB就是67H。 那么如果数据起始位置是08 00H,那么根据大端方式和小端方式有如下排列
从图中可以看出,大端方式是将最高有效位置于前,最低有效位置于后,小端方式则恰恰相反。 2.数据按“边界对齐”方式 假设存储字长总共32位(32bit对应4个byte),按照字节、半字节和字寻址。字寻址那就要看一个字占多少字节,那么存储地址就是4的多少倍。半字节寻址就是2的整数倍,字节寻址就是4的整数倍。 采用边界对齐可能需要填充空白,浪费一定空间。但是若不采用边界对齐方式存储,有可能会导致一个指令被存储在两个或以上的存储字中,因此会导致两次访存,影响效率。
简言之,边界对齐的存储方式是一种利用空间换时间的存储方式。