2012-02-19 37 views
2

我最近開始閱讀Programing From The Ground Up (PDF),但我遇到了第一個程序中的一個問題。該方案是非常簡單的:

.section .data 
.section .text 

.globl _start 

_start: 
    movl $1, %eax 
    movl $0, %ebx 
    int  $0x80 

但是在編譯和運行我得到的錯誤Illegal Instruction: 4。我確實編輯了該程序,以便它能夠正確編譯(刪除了兩個.section並將_start更改爲_main),以便可能會影響它。

我正在使用x86_64指令集(Intel處理器)。

+0

此代碼適用於我(在Linux上)。你在什麼操作系統上?雖然,你爲什麼要調用'fork'(2)系統調用?也許,你需要'exit'系統調用(1)? – kharvd 2012-02-19 19:25:44

+0

啊,那是一個錯字。我在Mac OS 10.7上。將它改爲1並沒有幫助。你是如何編譯的?我剛剛使用'gcc'。 – Jumhyn 2012-02-19 19:31:34

+0

as start.s -o start – kharvd 2012-02-19 19:32:38

回答

2

如果您使用的是x86-64,則需要稍微更改ABI,請參閱this。有關這些差異的非常好的總結,請參閱this

+0

真棒,謝謝! – Jumhyn 2012-02-19 20:08:12