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