MacOS下撰写汇编代码(使用yasm)
在macos下使用homebrew来安装yasm:
$ brew info yasm

安装命令:
$ brew install yasm
...
🍺 /usr/local/Cellar/yasm/1.3.0_2: 45 files, 3MB
撰写汇编代码如下(::参考自::NASM Hello World for x86 and x86_64 Intel Mac OS X):
; /usr/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 ; write
mov rdi, 1 ; stdout
mov rsi, qword msg
mov rdx, msg.len
syscall
mov rax, 0x2000001 ; exit
mov rdi, 0
syscall
section .data
msg: db "Hello, world!", 10
.len: equ $ - msg
把上面的代码命名为hello.s,使用yasm进行编译:
$ yasm -f macho64 hello.s
得到hello.o:
$ ls hello.o
hello.o
$
使用objdump查看.o文件里的实际汇编代码:
$ objdump -d -x86-asm-syntax=intel hello.o
解码后看到指令如下:

接下来把上面的hello.o使用ld命令进行链接,生成实际的可执行文件:
$ ld -e start -macosx_version_min 10.13.0 -static -o hello hello.o
执行上面的命令得到hello可执行文件,执行这个文件的结果如下:

以上是一个macos环境下汇编语言的编译环境的介绍。