Appearance
R13(SP)
R13又叫做SP(stack pointer):栈指针寄存器- 当前 SP 寄存器中始终存放的是栈顶元素的地址,栈区一般存放一些临时变量
R14(LR)
R14又被称作LR(link register),这个寄存器在现实程序跳转时用于保存程序的返回地址- 即当程序跳转时 CPU 会自动将当前指令的下一条指令的地址保存到
LR寄存器中,程序返回时将LR寄存器的数值赋值给PC就可以实现程序的返回
R15(PC)
R15又被称为PC寄存器(程序计数器),这个寄存器中保存的是即将执行的指令地址PC寄存器保存的地址中的指令执行完毕后PC的数值会自动向下+4- 如果有特殊需要的时候可以手动修改
PC的值
CPSR 和 SPSR
CPSR:current program stated register,当前程序状态寄存器:保存的是当前程序的运行状态(比如工作模式)SPSR:saved program stated register,保存程序状态寄存器:主要用户保存当前程序状态寄存器的- 有专用的指令修改程序状态寄存器:
msr和mrs

上图是寄存器每一位上的用途:
N[31]:指令运行结果为负数时,N 位被自动置 1,否则为 0,例如100-200Z[30]:指令的运行结果为零是,Z 位被自动置 1,否则为 0,例如100-100C[29]:- 加法:加法运算如果产生进位,
C位被置 1,否则为 0(32位指令,低32位向高32位进位) - 减法:减法运算如果产生借位,C 位被自动清 0,否则置 1(32位指令,低32位向高32位借位)
- 加法:加法运算如果产生进位,
V[28]:符号位发生变化,V 位被自动置 1,否则请 0I[7]:IRQ中断屏蔽位I = 0: 不屏蔽IRQ中断I = 1: 屏蔽IRQ中断
F[6]:FIQ中断屏蔽位F = 0: 不屏蔽FIQ中断F = 1: 屏蔽FIQ中断
T[5]: 状态位T = 0: 表示ARM状态,执行的是ARM指令集T = 1: 表示Thumb状态,执行的是Thumb指令集- ARM指令集 : 一条汇编指令编译生成32位的机器码
- thumb指令集:一条汇编指令编译生成16位的机器码
- ARM指令集的代码的密度低,而thumb指令记得代码密度高。
- ARM指令集的功能性要高于Thumb指令集。
M[4:0]: 模式位- 10000 User mode;
- 10001 FIQ mode;
- 10010 IRQ
- 10011 SVC mode;
- 10111 Abort mode;
- 11011 Undfined mode;
- 11111 System mode;
- 10110 Monitor mode;