在 macOS 上运行汇编代码

查看原文

本文介绍了如何将 1+1 这个表达式转成在 macOS 上可运行的二进制程序。

  1. 转汇编文件 c.s
# 使 ld 可以找到入口点
global start
start:

# 1 + 1 在寄存器模型上说白了就是 栈和两个寄存器 移来移去的操作
push 1
push 1
pop ebx
pop eax
add eax, ebx
push eax

# 程序结束时放上中断
mov eax, 0x1
int 0x80
  1. 编译成二进制文件
$ nasm -f macho c.s
  1. 链接
$ ld c.o
  1. 运行
$ ./a.out
$ echo $?
2