ATPCS规定arm的数据栈的操作是8字节对齐,为啥不是4字节呢?4字节是正好32位,应该可以满足需求啊!

2025-03-10 01:49:12
推荐回答(1个)
回答1:

在ARMv5TE中,批量传送指令LDRD/STRD要求数据栈是8字节对齐的,以提高数

据的传送速度.用ADS编译器产生的目标文件中,外部接口的数据栈都是8字节对齐的,

并且编译器将告诉连接器: 本目标文件中的数据栈是8字节对齐的. 而对于汇编程序

来说,如果目标文件中包含了外部调用,则必须满足以下条件: 外部接口的数据栈一定

是8位对齐的,也就是要保证在进入该汇编代码后,直到该汇编程序调用外部代码之

间,数据栈的栈指针变化为偶数个字; 在汇编程序中使用PRESERVE8伪操作告诉连

接器,本汇编程序是8字节对齐的.

我查到的,看的不是很懂,如果你查到了麻烦短信我下,谢谢了。