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