assembly 如何在树莓派汇编语言中使用“printf”

pgvzfuti  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(113)

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

当我编译并执行这段代码时,它会打印出以下内容:
11 22 33 1995276288
如您所见,R4中的值没有打印正确的值。
我不知道为什么?

mum43rcc

mum43rcc1#

只有前4个参数在ARM上的寄存器(r 0-r3)中传递,任何其他参数都在堆栈上传递。查看调用ABI的过程以了解详细信息。

相关问题