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 )