AArch64 程序集 _printf 函数在没有 消息后(apple silicon mac)[重复]

问题描述 投票:0回答:0

我尝试使用 _printf 打印一条消息,但它不会在没有 在留言的最后

.global _main
.p2align 2

.equ SYS_WRITE, 4
.equ SYS_READ, 3
.equ SYS_EXIT, 1

_main:
    adr x0, message
    bl _printf

    // Exit the program
    mov x0, #0               // System call number for exit
    mov x16, SYS_EXIT        // System call for exit
    svc #0

message:
    .string "Hello, World!"

它不打印字符串

我发现将一个参数传递给一个字符串 最后工作

.global _main
.p2align 2

.equ SYS_WRITE, 4
.equ SYS_READ, 3
.equ SYS_EXIT, 1

_main:
    adr x0, fmt
    adr x22, message
    str x22, [sp]
    bl _printf

    // Exit the program
    mov x0, #0               // System call number for exit
    mov x16, SYS_EXIT        // System call for exit
    svc #0

message:
    .string "Hello, World!"
fmt:
    .string "%s\n"

我用来组装和链接的命令是

as file.s -o file.o && ld -o file file.o -lSystem -syslibroot 
xcrun -sdk macosx --show-sdk-path
 -e _main -arch arm64 && ./file

assembly printf apple-m1 arm64 stdio
© www.soinside.com 2019 - 2024. All rights reserved.