ARM中特殊的功能寄存器

ARM7,ARM9,ARM11 有37个32-Bits长的寄存器.
1 个用作PC( program counter)
1个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30 个通用寄存器

Cortex体系结构下有40个32-Bits长的寄存器
Cortex-A(ARM-v7)多出3个寄存器,Monitor 模式 r13_mon , r14_mon, spsr_mon
1 个用作PC( program counter)
1个用作CPSR(current program status register)
6个用作SPSR(saved program status registers)
32 个通用寄存器

本文只做特殊寄存器的分析
R13 —> sp (the Stack Pointer) 栈指针寄存器
SP中存放的是栈顶的地址。

R14 —> lr (the link Register) 链接寄存器
保存程序的返回地址

R15 —> pc (the Program Counter) 程序计数寄存器
存放当前取指指令的地址

cpsr —> current program status register
当前程序状态寄存器
作用:保存当前程序的运行状态

spsr —> saved program status registers
保存程序状态寄存器
作用:对cpsr寄存器进行备份

CPSR寄存器详解
N[31]:运算结果为负数,N位被自动置1,否则为0

Z[30]:运算结果为0,Z位被自动置1,否则为0

C[29]:
加法:
产生进位,C位被自动置1,否则为0
进位:低32位 向 高32位进位
减法:
产生借位,C位被自动清零,否则为1
借位:低32位 向 高32位借位

V[28]:符号位发生变化,V位被自动置1,否则为0。

I[7]:
I = 0 : 使能IRQ中断
I = 1 : 禁止IRQ中断
F[6]
F = 0 : 使能FIQ中断
F = 1 : 禁止FIQ中断
T[5]:状态位
T = 0 : ARM状态
T = 1 : Thumb状态
M[4:0]:模式位
0b10000 User mode;
0b10001 FIQ mode;
0b10011 SVC mode;
0b10111 Abort mode;
0b11011 Undfined mode;
0b11111 System mode;
0b10110 Monitor mode;
0b10010 IRQ mode;
其他保留
对应的模式简介
ARM7、ARM9、ARM11 有7个基本工作模式:
User : 非特权模式,大部分任务执行在这种模式
FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
Supervisor(SVC) :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式
Undef : 当执行未定义指令时会进入这种模式
System : 使用和User模式相同寄存器集的特权模式

Cortex-A特有模式:
Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式;
也是一种特权模式

你可能感兴趣的:(ARM专栏)