2013-01-18 84 views
0

我是新來組裝,我試圖讓這個Hello World程序的工作:的Hello World大會非法指令:4

.data 
msg: 
    .ascii "Hello, world!\n" 
    len = . - msg 
.text 
    .globl start 
start: 
    movl $len,%edx 
    movl $msg,%ecx 
    movl $1,%ebx 
    movl $4,%eax 
    int $0x80 
    movl $0,%ebx 
    movl $1,%eax 
    int $0x80 

我編譯它在Mac上使用:

as -o program.o program.s 

而且

ld -o program program.o 

兩個工作完美,但是當我運行生成的程序中,我得到的錯誤:然後鏈接它

Illegal instruction: 4 

有人能告訴我如何解決這個問題。

+0

我該如何在Mac上寫一個hello world? – carloabelli

回答

2

Mac的相當於你的代碼是一樣的東西:

.data 
msg: 
    .ascii "Hello, world!\n" 
    len = . - msg 
.text 
    .globl start 
start: 
    movq $len, %rdx 
    lea msg(%rip), %rsi 
    movq $1,%rdi 
    movq $0x2000004,%rax 
    syscall 
    movq $0,%rdi 
    movq $0x2000001,%rax 
    syscall 

注意,SYS調用約定是不同的(不同的寄存器,參數和調用機制),我已經改成了64位。

+0

非常感謝! – carloabelli