
1.生成汇编文件
2.寄存器
3.指令
生成汇编文件
- 生成汇编文件
$ xcrun --sdk iphoneos clang -S -arch arm64 main.c -o main.s
寄存器
- 通用寄存器
64bit的:x0~x28
32bit的:w0w28(属于x0x28的低32bit)
- 程序计数器
pc (Program Counter)
记录CPU当前指令的是哪一条指令
存储着当前CPU正在执行的指令的地址
类似8086汇编的ip寄存器
- 堆栈指针
sp(stack point)
fp (Frame point),也就是X29
- 链接寄存器
IR(Link Register),也就是X30
存储着函数返回地址
- 程序状态寄存器
cpsr (Current Program Status Register)
spsr (Saved Program Status Register),异常装下使用
指令
-
mov
-
ret
函数返回
将IR(X30)寄存器的值赋值给pc寄存器
-
add
-
sub
-
cmp
将两个寄存器相减
相减的结果会影响cpsr寄存器的标志位
- b
跳转指令
壳带条件跳转,配合cmp使用
- bl
带返回的跳转指令
- 条件域
EQ:等于
NE:不等于
GT:大于
GE:大于等于
LT:小于
LT:小于等于
- 内存操作
load:从内存中读取数据
store:往内存中写入数据