我目前正在 Linux 上学习汇编语言。我一直在使用“从头开始编程”一书,所有示例都是 32 位的。我的操作系统是 64 位的,我一直在尝试在 64 位中完成所有示例。但是我遇到了麻烦:
.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 美元是“从头开始编程”所说的使用,但是 Internet 上的多个来源说 64 位系统调用号是 60 美元。参考 我做错了什么?我还应该注意哪些其他问题以及我应该使用什么作为参考?以防万一你需要知道,我在从头开始编程的第 5 章。