博文参考:
arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍
arm平台根据栈进行backtrace的方法-腾讯云开发者社区-腾讯云 (tencent.com)
特殊功能寄存器:
SP: 即 R13,栈指针,
LR:即 R14,链接指针,保存未跳转之前的程序的下一条指令的地址,由 CPU 硬件实现。
PC:R15,程序计数器,保存当前正在取的指令的地址 ,由于 ARM 是两级流水线,可以理解为正在执行的指令有两条 32 位的指令(2*32 bit = 8 Byte 的指令长度),即正在执行的指令的地址 +8(字节)。
状态寄存器:
CPSR 和 SPSR,arm 进入异常模式后,SPSR自动保存进入异常前的 CPSR 的值,以便异常返回后恢复异常发生时的工作状态。
LDR:Load 读内存
STR:Store 写内存
ADD:加法
SUB:减法
CMP:比较
B:直接跳转
BL:跳转和 Link,将返回地址保存到 LR 寄存器再跳转
汇编对比理解视频: