gpt4 book ai didi

assembly - 为什么 "Procedure Call Standard for the ARM Architecture"(AAPCS) 要求 SP 8 字节对齐?

转载 作者:行者123 更新时间:2023-12-01 18:59:40 24 4
gpt4 key购买 nike

由于这是一个反复出现的主题,因此我提出了一个相关问题。

根据AAPCS :

5.2.1.1 Universal stack constraints

  • SP mod 4 = 0. The stack must at all times be aligned to a word boundary

5.2.1.2 Stack constraints at a public interface

  • SP mod 8 = 0. The stack must be double-word aligned.

8字节对齐背后的原理是什么?

最佳答案

主要原因是STRD和LDRD只能工作在8字节对齐的地址上。因此,要在堆栈变量上使用它们,堆栈指针需要始终保持 8 字节对齐。

引用ARM Website :

Eight-byte stack alignment is of particular benefit to processors supporting LDRD and STRD instructions, for example, processors based on ARM architecture v5TE and later. If the stack is not eight-byte aligned the use of LDRD and STRD might cause an alignment fault, depending on the target and configuration used.

ARM在这个ABI Advisory Note中也详细解释了它.

关于assembly - 为什么 "Procedure Call Standard for the ARM Architecture"(AAPCS) 要求 SP 8 字节对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25282466/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com