较小堆栈边界的折衷是什么?

时间:2010-10-26 13:56:01

标签: gcc memory-management

在gcc 4.5中,在调用函数时,堆栈必须与16字节边界对齐(以前的版本只需要4字节对齐)。

对于32位机器,4字节是合理的。 只需“和0xfffffff0,%esp”即可轻松对齐16字节。

但它可能比4字节边界花费更多的内存,不是吗? 简而言之,我的问题是为什么gcc 4.5默认为16字节?它有价值吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

现代处理器的许多向量扩展需要16字节对齐加载/存储。某些体系结构提供未对齐的负载,但通常这些负载明显较慢。

对于memcpy和其他类似的低级操作,这种对齐可能会有一些好处,这些操作会更频繁地遇到更严格的对齐源/目的地。

此外,它几乎肯定会增加自动矢量化成功的机会,这是gcc最新版本所包含的内容。