我之前已经编写了x86_64程序集,但是没有在使用gas的Linux上编写代码,而且我似乎无法使这个简单的hello world示例正常工作(通过将C程序与gcc组装在一起创建引用会产生很多asm代码,对于这个最小的示例似乎不太相关)。该程序运行正常,但没有任何内容写入stdout。
.section .rodata
message: .string "hello, world!\n"
.section .text
.globl main
.type main, @function
main:
mov $1, %rax
mov $1, %rdi
mov message, %rsi
mov $14, %rdx
syscall
mov $60, %rax
mov $0, %rdi
syscall
调用约定似乎很好,gbd告诉我第一个syscall
返回-14
。即使在阅读了写联机帮助页后,我也不知道这意味着什么,写系统调用是否完全运行?