mac上nasm汇编helloworld
osx 10.9上自带的nasm版本比较低,然后不能编译64位的程序。
从www.nasm.us直接下载最新的版本;路径加入系统的PATH环境变量里面就好了。
mac上面的gcc编译.o
文件的时候默认的入口是_main
,而使用ld命令时,默认的是start
。
SECTION .data
msg: db "hello xiaozi!", 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 asm1.o asm1.asm
ld -o asm1 -e _main asm1.o
./asm1