既然都裸机了,还是简单回顾一下汇编吧。。。
1 概念

来自:https://redfoxsec.com/blog/introduction-to-assembly-language/
汇编基本上就是机器码。
1.2 寄存器
一些必要了解的寄存器
| 寄存器 | 作用 |
|---|---|
| r0--r3 | 参数 / 返回值 |
| r4--r11 | 被调用者保存 |
| r12 | 临时 |
| sp | 栈 |
| lr | 返回地址 |
| pc | 程序计数器 |
特殊寄存器
| 寄存器 | 作用 |
|---|---|
| CPSR | 当前状态(中断 / 模式) |
| SPSR | 异常返回用 |
1.3 基础指令
数据传送
mov r0, r1
mov r0, #1
ldr r0, =label
ldr r1, [r0]
str r1, [r0]
算数逻辑
add r0, r0, #1
sub r1, r1, r2
cmp r0, #0
and r0, r0, #0xFF
orr r0, r0, #1
bic r0, r0, #0x80
跳转/调用(核心)
b label
bl func
bx lr
条件执行(ARM)
beq label
bne label
blt label
bgt label
strlt r0, [r1]
栈操作
push {r4-r7, lr}
pop {r4-r7, pc}
stmfd sp!, {...}
ldmfd sp!, {...}
中断
cpsid i
cpsie i
bkpt 0xAB
1.4 寻址方式
立即数
mov r0, #100
基地址+偏移
ldr r1, [r0, #4]
str r1, [r0, #0x10]
2 环境搭建
实在不想本地搭建环境了。直接用web的吧,查了一下,有两个网站不错。
第一个是运行汇编的网站CPUlator:
https://cpulator.01xz.net/?sys=arm

第二个是查看C代码到汇编的映射网站Compiler Explorer (Godbolt)

最后一个是动画显示过程的。VisUAL (ARMv7 Visualizer),不过这个要安装一下。
https://salmanarif.bitbucket.io/visual/
