为什么长long值与8字节边界对齐?

时间:2015-01-09 22:52:24

标签: c++ visual-studio-2010 x86 alignment

我知道double与8字节边界对齐,因为这对浮点指令更有帮助。但为什么long long也与8字节边界对齐?

2 个答案:

答案 0 :(得分:3)

最可能的解释是硬件架构在8字节对齐时提供更快的long long读写。

对于记录,使double类型8字节对齐的推理是相同的。使用寄存器来注册指令来实现实际的浮点算术运算。存储器对齐与寄存器到寄存器操作无关。内存对齐仅与涉及内存读取和写入的指令的性能相关。

答案 1 :(得分:3)

可能的解释是long longdouble变量都是8字节长。如果不将它们与8字节边界对齐,如果变量在页面结束前3个字节开始并且在后续页面中保留5个字节,则它们可能跨越两页内存。这可能会导致性能开销,因为读取该变量可能需要获取两页内存(并且写入它将修改两页内存而不是一页)。还讨论了其他一些低级别的性能影响here