|
发表于 2004-7-30 15:30:49
|
显示全部楼层
关于对齐的意义:
下图表示内存中的8个字节,在地址XXXX0000(二进制)处保存着一个数 X = 0x12345678
- -------------------------------------
- 地址XXXX0000: | 78 | 56 | 34 | 12 |
- -------------------------------------
- 地址XXXX0100: | 00 | 00 | 00 | 00 |
- -------------------------------------
复制代码
这种情况下,cpu以地址XXXX0000做一次32位的读操作就得到了X
但如果X保存在地址XXXX0010,如下图所示
- -------------------------------------
- 地址XXXX0000: | 00 | 00 | 78 | 56 |
- -------------------------------------
- 地址XXXX0100: | 34 | 12 | 00 | 00 |
- -------------------------------------
复制代码
这种情况下,cpu以要分别以地址XXXX0000和XXXX0100各做一次32位的读操作,然后组合得到X
即当进行32位内存访问时,地址的后两位必须是0 (或者说乎略最后两位,因为硬件上便于实现)
因此,对齐可以节省程序运行时间. |
|