參考後面的組合語言程式碼64.asm,編譯與執行的方式如下:
- nasm -f macho64 64.asm
- ld -macosx_version_min 10.7.0 -lSystem -o 64.exe 64.o
- file 64.o 64.exe
64.o: Mach-O 64-bit object x86_64
64.exe: Mach-O 64-bit executable x86_64 - ./64.exe
Hello, x86_64 world!
- 用nasm將組合語言程式碼64.asm編譯成叫64.o的目的檔
- 將目的檔鍊結成叫做64.exe的執行檔
- 用file這個指令看目的檔與執行檔格式
- 執行64.exe
上面的64.asm程式碼來自FiloSottile,詳細內容如下
; /opt/local/bin/nasm -f macho64 64.asm && ld -macosx_version_min 10.7.0 -lSystem -o 64 64.o && ./64
global start
section .text
start:
mov rax, 0x2000004 ; put the write-system-call-code into register rax
mov rdi, 1 ; tell kernel to use stdout
mov rsi, msg ; rsi is where the kernel expects to find the address of the message
mov rdx, msg.len ; rdx is where the kernel expects to find the length of the message
syscall
mov rax, 0x2000001 ; exit system call
mov rdi, 0
syscall
section .data
msg: db "Hello, x86_64 world!", 10
.len: equ $ - msg
參考資料與備註
- NASM Hello World for x86 and x86_64 Intel Mac OS X by Filo Sottile
- 英文維基百科 Netwide Assembler 條目
- asm基础——在mac下使用nasm进行汇编
- Simon Tatham也是PuTTY的開發者
作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
刪除作者已經移除這則留言。
刪除