In Arm什么顺序是存储在堆栈中的参数?

6 assembly stack arm

这是一个家庭作业问题.我正在尝试调用表单的函数FOO(A,B,C,D,E,F).前四个参数是注册的r0-r3.最后两个分别位于r7r6(分别),因此它们是向后的.如何将参数压入堆栈,使它们按正确的顺序排列?

它是STMFD sp! {r0-r3}那么STMFD sp! {r7, r6, lr}?我正在使用完全下降的堆栈.

这个网站上的图表是否正确,因为如果最先存储最低寄存器,它STMFD r13!, {r4-r7}应该不在r4哪里r7

ken*_*ytm 8

在ARM中,寄存器列表的顺序无关紧要.它将始终从最低的寄存器(R0,R1,R2,...)开始存储以下都是等效的(如果汇编器接受):

STMFD SP!, {R0-R3}
STMFD SP!, {R3, R2, R1, R0}
STMFD SP!, {R1-R2, R0, R3}
Run Code Online (Sandbox Code Playgroud)