这是一个家庭作业问题。我正在尝试调用 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/