OS X 的 Hello World(x86 64 Intel 語法)
.intel_syntax noprefix
.data
.align 16
hello_msg:
.asciz "Hello, World!"
.text
.global _main
_main:
push rbp
mov rbp, rsp
lea rdi, [rip+hello_msg]
call _puts
xor rax, rax
leave
ret
組裝:
clang main.s -o hello
./hello
筆記:
- 不鼓勵使用系統呼叫,因為 OS X 中的系統呼叫 API 不被認為是穩定的。而是使用 C 庫。 ( 參考 Stack Overflow 問題 )
- 英特爾建議大於一個字的結構從 16 位元組邊界開始。 ( 參考英特爾文件 )
- 訂單資料通過暫存器傳遞到函式中:rdi,rsi,rdx,rcx,r8 和 r9。 ( 參考 System V ABI )