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