1. 汇编语言种类
- 8086汇编(8086处理器是16bit的CPU)
- Win32汇编
- Win64汇编
- ARM汇编(嵌入式、Mac、iOS)
......
首先介绍一个概念:指令集:RISC(精简指令集), CISC(复杂指令集)
指令集,存储在cpu内部的小程序。传统pc机大多基于x86架构(8086、80386、80486、奔腾、酷睿...),手机基本都是基于arm,不用x86主要是因为x86使用的CISC功能很强大,但是太耗电,自然又易发热,而arm基于 RISC,大瘦身,但是运算力稍差,所以现在8核手机都不见得跑得过x86双核。
iphone 手机用到的就是 ARM 汇编
架构 | 设备 |
---|---|
armv6 | iphone, iphone2, iPhone3G, iPod Touch 第一点第二代 |
armv7 | iphone3GS, iphone4, iPhone4s, iPad, iPad2, iPad3,iPad mini, iPod touch 3G, iPod Touch 4 |
armv7s | iPhone5, iPhone5c, iPad4 |
arm64 | iPhone5s 以后 iPad Air, iPad mini2 以后 |
2. CPU 工作原理
- 2.1 总线(
Bus
)
- 地址总线(
AB
)
根据总线宽度,来决定寻址能力 (2^n bit)- 数据总线(
DB
)
根据总线宽度决定吞吐量 (数据传输速度 n bit)- 控制总线(
CB
)
- 2.2 寄存器(
Register
)- arm64 拥有31个64位
通用寄存器 x0 - x28, fp, lr, sp
- 其中
w0 - w28
为x0-x28
对应的低32位 - pc 寄存器(
program counter
)
- arm64 拥有31个64位
指令指针寄存器, CPU 根据 pc 中存储的地址, 决定下一步要读取的指令
- bl 指令
转移指令, 完成 CPU 执行跳转功能
3. xcode 调试汇编代码常用命令
打印地址:
p + 指针
单步执行:ni
进入跳转:s
查看内存:Debug -> Debug Workflow -> view memory
或者shift+cmd+M