在Mac上写汇编还是相当方便的。本文通过写一个Helloworld程序来入门。
首先,MacOS 自带nasm,只是版本有点老,编译不了64位程序,只要上官网下一个最新的,替换一下就行了。
有一点需要注意的是mac上gcc编译.o文件的默认入口是_main,而使用ld命令的时候默认的事start.
下面创建helloworld.asm文件:
SECTION .data
msg: db "hello world!", 0x0a
len: equ $-msg
SECTION .text
global _main
kernel:
syscall
ret
_main:
mov rax,0x2000004
mov rdi,1
mov rsi,msg
mov rdx,len
call kernel
mov rax,0x2000001
mov rdi,0
call kernel
在终端运行以下语句
nasm -f macho64 -o helloworld.o helloworld.asm
ld -o helloworld -e _main helloworld.o
./helloworld