Assembly 如何使用;printf";在raspberry pi汇编语言中
Assembly 如何使用;printf";在raspberry pi汇编语言中,assembly,arm,Assembly,Arm,printf对可以打印的值的数量有限制吗 这是我的密码 .data .balign 4 string: .asciz "\n%d %d %d %d\n" .text .global main .extern printf main: push {ip, lr} @ push return address + dummy register @ for alignment
printf
对可以打印的值的数量有限制吗
这是我的密码
.data
.balign 4
string: .asciz "\n%d %d %d %d\n"
.text
.global main
.extern printf
main:
push {ip, lr} @ push return address + dummy register
@ for alignment
ldr r0, =string @ get address of string into r0
mov r1, #11
mov r2, #22
mov r3, #33
mov r4, #444
bl printf @ print string and pass params
@ into r1, r2, and r3
pop {ip, pc} @ pop return address into pc
当我编译并执行此代码时,它会打印以下内容:
1122331995276288
如您所见,R4中的值没有打印正确的值
我不知道为什么?只有前4个参数在ARM上的寄存器(r0-r3)中传递——任何其他参数都在堆栈上传递。查看以了解详细信息。因为只有前4个参数在寄存器中传递。听起来你好像忘了阅读呼叫约定文档。这就解释了问题。Thanks@DanielRobertWebb:然后您应该单击此答案上的复选标记。