2015-07-04 33 views
1

這是我第一次爲Mac編譯程序,並且不斷髮現一些奇怪的錯誤,明智的。到目前爲止,我只是想打印「Hello,World!」到終端上。這裏是我的代碼:NASM'fatal:No section for index 2 offset 0 found on Mac OS X Yosemite

global _main 


section .text 

_main: 
    mov rax, 0x20000004 
    mov rdi, 1 
    mov rsi, msg 
    mov rdx, msg.len 
    syscall 

    mov rax, 0x20000001 
    mov rdi, 0 
    syscall 


section .data 

msg: db "Hello, World!", 10 
.len: equ $ - msg 

每當我運行此代碼,我用命令nasm -f macho64 print.asm。順便說一句,nasm -v打印NASM version 2.11.08 compiled on Mar 10 2015。當我使用上面的命令,NASM給出了這個輸出:

print.asm:9: fatal: No section for index 2 offset 0 found 

我很難過,想要任何幫助。謝謝!

+0

不知道爲什麼你行號17,我得到線9號(除非你沒」 t粘貼你的實際文件內容)。把'mov rsi,msg'改成''''''''''''''''''''''你不能使用這樣的絕對地址。 – Jester

+0

@Jester對不起,我忽略了一條評論。編輯! – Jerfov2

+0

@Jester爲什麼不呢? – Jerfov2

回答

2

我遇到了似乎是問題。從the

,而不是: 「MOV RSI,味精」,使用: 「LEA RSI,[REL味精]」

+1

我在10.11,把它改成'''''''''''''''[rel msg]'不會改變任何東西:( – cubuspl42

+1

@ cubuspl42在這裏相同。它似乎是nasm 2.11.x中的一個錯誤。通過下載2.10 http ://www.nasm.us/pub/nasm/releasebuilds/2.10/macosx/ – asr

+0

任何人都有一個鏈接到這個錯誤報告?我在10.10和10.11但不是10.9遇到這個;會很高興有一個官方上游參考。 –