一.特殊的寄存器
1 R13寄存器
R13寄存器 --别名--> SP ------> the Stack Pointer : 栈指针寄存器
作用:栈指针寄存器中存放的是栈空间的地址。此栈用来压栈保存现场。
2 R14寄存器
R14寄存器 --别名--> LR -----> the Linking Register : 链接寄存器
作用:保存的是返回地址。
3 R15寄存器
R15寄存器 --别名--> PC -----> the Program Counter : 程序计数寄存器
作用:存放的时当前要取指指令的地址。
4 cpsr寄存器
cpsr寄存器 -----> Currented Program Statues Register : 当前程序状态寄存器。
cpsr寄存器作用:存放的时当前程序的运行的状态,比如工作模式
N[31] : 指令的执行结果为负数时,N位被自动置1,否则清0.
Z[30] : 指令的执行结果为零时,Z位被自动置1,否则清0.
C[29] :
加法:低32位向高32位产生进位(向上溢出),C位被自动置1,否则清0.
减法:低32位向高32位产生借位(向下溢出),C位被自动清0,否则置1.
V[28] : 符号位发生变化,V位被自动置1,否则清0.
I[7] : IRQ中断屏蔽位
I = 0 : 不屏蔽IRQ的中断
I = 1 : 屏蔽IRQ的中断
F[6] : FIQ中断屏蔽位
F = 0 : 不屏蔽FIQ的中断
F = 1 : 屏蔽FIQ的中断
T[5] : 状态位
T = 0 : ARM状态,执行ARM指令,1条ARM指令占4字节的空间。
T = 1 : Thumb状态,执行Thumb指令,1条Thumb指令占2字节的空间。
在Cortex-M核中主要使用的就是Thumb指令。
M[4:0] : 模式位
10000 User mode;
10001 FIQ mode;
10011 SVC mode;
10111 Abort mode;
11011 Undfined mode;
11111 System mode;
10110 Monitor mode;
10010 IRQ mode
5 spsr寄存器
spsr寄存器 -----> Saved Program Statues Register : 保存程序状态寄存器。
spsr寄存器作用:保存当前程序的运行状态的急促请你,就是对cpsr寄存器进行备份。