这是一个作业问题。我正在尝试调用FOO(A,B,C,D,E,F)形式的函数。前四个参数在寄存器r0-r3中。最后两个分别位于r7r6中,因此它们是向后的。如何将参数按正确的顺序插入堆栈?

STMFD sp! {r0-r3}然后是STMFD sp! {r7, r6, lr}吗?我正在使用完整的降序堆栈。

this site上的图是否正确,因为如果首先存储最低的寄存器,那么STMFD r13!, {r4-r7}不应不将r4设置为r7所在的位置吗?

最佳答案

在ARM中,寄存器列表的顺序无关紧要。它将始终从最低的寄存器(R0,R1,R2等)开始存储以下所有内容(如果被汇编程序接受):

STMFD SP!, {R0-R3}
STMFD SP!, {R3, R2, R1, R0}
STMFD SP!, {R1-R2, R0, R3}

关于assembly - 在Arm中,参数按什么顺序存储在堆栈中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8482458/

10-11 15:35