我目前在Linux上学习汇编语言。我一直在使用“从头开始编程”一书,所有例子都是32位的。我的操作系统是64位的,我一直试图在64位上做所有的例子。我有麻烦,但是:x86_64汇编Linux系统调用混淆
.section .data
.section .text
.global _start
_start:
movq $60, %rax
movq $2, %rbx
int $0x80
这只是调用Linux退出系统调用或它应该。相反,它会导致一个SEG FAULT,而当我改为做这个时
.section .data
.section .text
.global _start
_start:
movq $1, %rax
movq $2, %rbx
int $0x80
它的工作原理。很显然,问题是我转向%rax的价值。我在第二个例子中使用的价值$ 1是'从头开始编程',据说可以使用互联网上的多个来源说64位系统呼叫号码是60美元。 Reference 我在做什么错?另外还应该注意哪些其他问题以及我应该使用什么参考?以防万一你需要知道,我从第五章开始编程。
我可能最终会这样做。感谢您的答复。 – 2011-12-14 19:32:33
应该为第一个系统调用参数使用`%rdi`,而不是`%rbx`。 – 2011-12-14 20:18:56