我目前在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