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

标签 assembly stack arm

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

相关文章:

r - 通过在 R 中填充 NA - 使栅格达到相同程度

javascript - armv6l 上的 meteor (树莓派)

ios - Hopper 反汇编器 iOS 文件中的十六进制含义

c++ - 为什么有人需要指向指针的指针?

assembly - 如何遍历汇编中的字符串,直到到达null? (strlen循环)

javascript - html/javascript 中的图像生成器问题

c - 在研究缓冲区溢出时我应该使用哪个版本的 GCC 或标志?

c++ - TIM6,基本时间生成功能不起作用

assembly - 使用 TASM 写入文件

c - 键盘处理程序导致段错误 (djgpp)