【发布时间】:2015-11-06 03:56:02
【问题描述】:
我正在尝试将 r0-r5 传递给函数 check。然而,只有寄存器 r0-r3 是通过引用复制的。在我的主要功能中,我有这个代码。
push {lr}
mov r0, #1
mov r1, #2
mov r2, #3
mov r3, #4
mov r4, #5
mov r5, #6
bl check
pop {lr}
bx lr
在我的check 函数中,我有这个代码。这是在一个单独的文件中,也不确定这是否重要
m: .asciz "%d, %d ~ (%d, %d, %d)
...
push {lr}
ldr r0, =m
bl printf
pop {lr}
bx lr
这个的输出是2, 3 ~ (4, 33772, 1994545180)。我正在尝试学习组装,所以你能用谷歌搜索解释一下我知道我需要使用堆栈但是,我不知道如何使用它并想学习如何使用它。提前致谢。
【问题讨论】:
-
如果您对所涉及的所有内容都不太熟悉,这可能有点难读,但作为参考,您可以找到 EABI 调用约定的官方定义here。
标签: function assembly stack arm gnu