分类 Assembly 下的文章

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