ARM处理器寄存器
1.1.1ARM 处理器不同模式下寄存器CPU 的模式不同,在其对应模式下可
以使用的寄存器也不相同,如表3-2 所示:表3-2 ARM 处理器模式下寄存器寄
存器类别寄存器在汇编中的名称各模式下实际访问的寄存器用户系统管理终止
未定义中断快中断通用寄存器和程序计数器R0(a1)R0R1(a2)R1R2(a3)R2R3(a4)
R3R4(v1)R4R5(v2)R5R6(v3)R6R7(v4)R7R8(v5)R8R8_fiqR9(SB,v6)R9R9_fiqR10( SL,v7)R10R10_fiqR11(FP,v8)R11R11_fiqR12(IP)R12R12_fiqR13(SP)R13R13_svc R13_abtR13_undR13_irqR13_fiqR14(LR)R14R14_svcR14_abtR14_undR14_irqR14 _fiqR15(PC)R15 状态寄存器CPSRCPSRSPSR 无
SPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq 其中R0~R7 在所有模式下都可以使用的共有寄存器,R8~R12 是快速中断模式下私有的寄存器,其它模式下
不能使用,之所以叫其快速中断,是因为快速中断模式下,这几个私有寄存器
里数据在模式切换时可以不用入栈保存。
除了用户模式和系统模式共用一组
R13,R14,其余每种模式都私有自己的R13,R14,因为在每种模式下都有自
己的栈空间用于执行程序,在执行程序过程中还要保存返回地址,这样可以保
证在进入不同模式时,当前模式下栈空间不被破坏。
比如:网卡因为数据到达,
产生了中断进入中断模式,在中断模式下有自己的中断处理例程(ISR),ISR
在执行时要用到栈空间,因此要使用R13,R14。
中断处理完成后,返回用户
模式下,要继续执行被网卡中断信号中断的执行程序。
用户模式和系统模式为
什么要共用一组R13,R14 呢?这是因为,在特权模式下可以自由切换工作模
式,但是如果切换到用户模式下,就不能再切换到特权模式了,这是CPU 为
操作系统提供的保护机制,但是有的时候就需要切换到用户模式下去使用其
R13,R14 寄存器,比如当操作系统的进程进行上下文切换时,如果用户模式。