如何在MacOS上玩儿汇编?

在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


显示hello world! 就是成功了!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值