【发布时间】:2013-11-19 12:22:04
【问题描述】:
如何将堆栈指针对齐到 8 字节,现在在 ARM 中对齐为 4 字节。根据我的理解,如果堆栈指针指向某个地址,如 0x4 、0x8、0x12 和 0x16 等,则它是 4 字节对齐的。
因此,将堆栈指针对齐为 8 字节意味着它应该指向 0x8 、0x16 、0x24 和 0x32 等地址。
现在如何将 4 字节堆栈指针对齐到 8 字节对齐指针?
【问题讨论】:
-
ARM EABI 告诉 SP 应该是 8 字节对齐的,在这种情况下你让它对齐到 8?你在写汇编吗?
-
是的,我正在尝试用汇编语言编写
-
我认为一种简单的方法可以实现,当您编写汇编时,即使您不使用它们,也总是将 2 个寄存器推到一起 - 所以不要推奇数个寄存器。我不知道这是否是一个成语,但这会让你的生活更轻松,然后特别是向上或向下舍入,这可能会根据硬件配置发生变化。 (很可能不是:))
-
@auselen 请在你的答案中添加它,我在两条指令中这样做,比如和 r4, sp, #4 , sub sp, sp, r4 ,知道它是否正常