在 ARM64 程序集中,输出仅显示 %d

In ARM64 Assembly, output is only showing %d

提问人:Christinne 提问时间:10/21/2023 最后编辑:Christinne 更新时间:10/21/2023 访问量:35

问:

我是一般汇编的新手,我无法弄清楚我在这个代码中做错了什么。

.text
.global _start
.align 2

_start:
    mov x0, #2                  // first number
    mov x1, #2                  // second number

    bl add_numbers
    bl _printf
    bl _terminate

_printf:
    mov x0, #1                  // stdout
    adr x1, result_string       // endereço da string de resultado
    mov x2, #30                 // string length
    mov x16, #4                 // sys_write
    svc 0                       // syscall
    ret

_terminate:
    mov x0, #0                  
    mov x16, #1            
    svc 0
    ret                  

add_numbers:
    add x0, x0, x1
    ret

result_string: .ascii "Result: %d\n"

据我了解,结果应该是 4,但这是:

Result: %d"
函数 输出 加法 ARM64

评论

1赞 Michael 10/21/2023
您的函数不是实际的 .它只是完全按原样写入 stdout。_printfprintfresult_string
0赞 Christinne 10/21/2023
@Michael我该如何解决这个问题?我尝试了其他方法,但仍然不起作用
0赞 Siguza 10/22/2023
@Christinne查看一些开源实现的源代码。printf

答: 暂无答案