我正在尝试使用这个例子来探索 GNU Assembler:https://0xax.github.io/asm_1/
我的代码 main.s 是
.data
message: .ascii "ASSEMBLY OUTPUT"
.text
.globl _start
_start:
movq $1, %rdi
movq $1, %rax
movq $15, %rdx
movq $message, %rsi
syscall
movq $60, %rax
movq $0, %rdi
syscall
命令行准备:
作为-g -o main.o main.s
ld -o 主要 main.o
现在,我运行 ./main 但它没有打印任何内容并且终端正在等待我的下一个命令。
发生什么问题了?
在 GNU 调试器中,数字已成功存储在寄存器中。
我在 RAX 中看到第一个系统调用的结果“-14”。
答案1
我建议在输出字符串中添加换行符,以便它脱颖而出。请尝试以下版本:
.data
message: .ascii "\nASSEMBLY OUTPUT\n\n"
msglen = . - message
.text
.globl _start
_start:
movq $1, %rdi
movq $1, %rax
movq $msglen, %rdx
movq $message, %rsi
syscall
movq $60, %rax
movq $0, %rdi
syscall