【发布时间】:2019-09-04 18:44:02
【问题描述】:
我阅读了 i386 和 AMD64 的 System V ABI。他们说参数必须四舍五入到字长的倍数。我不明白为什么。
这是情况。如果您将 4 个 char 参数传递给 i386 架构上的函数,它将占用 16 个字节(每个 char 参数 4 个字节)。只为所有 4 个参数分配 4 个字节不是更有效吗?就像它应该与局部变量一样?
对齐不是答案。因为在这两种情况下,16 字节堆栈对齐可能需要 4-12 字节填充。
【问题讨论】:
-
你不能
pop和char。你可以弹出一个单词。 -
可能重复(至少对于堆栈参数约定):Why function parameter occupy at least 4 bytes stack on x86?