微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > ARM处理器寄存器

ARM处理器寄存器

时间:11-20 来源:互联网 点击:

1.1.1ARM处理器不同模式下寄存器

CPU的模式不同,在其对应模式下可以使用的寄存器也不相同,如表3-2所示:
表3-2 ARM处理器模式下寄存器
寄存器类别寄存器在汇编中的名称各模式下实际访问的寄存器
用户系统管理终止未定义中断快中断
通用寄存器和程序计数器R0(a1)R0
R1(a2)R1
R2(a3)R2
R3(a4)R3
R4(v1)R4
R5(v2)R5
R6(v3)R6
R7(v4)R7
R8(v5)R8R8_fiq
R9(SB,v6)R9R9_fiq
R10(SL,v7)R10R10_fiq
R11(FP,v8)R11R11_fiq
R12(IP)R12R12_fiq
R13(SP)R13R13_svcR13_abtR13_undR13_irqR13_fiq
R14(LR)R14R14_svcR14_abtR14_undR14_irqR14_fiq
R15(PC)R15
状态寄存器CPSRCPSR
SPSRSPSR_abtSPSR_abtSPSR_undSPSR_irqSPSR_fiq
其中R0~R7在所有模式下都可以使用的共有寄存器,R8~R12是快速中断模式下私有的寄存器,其它模式下不能使用,之所以叫其快速中断,是因为快速中断模式下,这几个私有寄存器里数据在模式切换时可以不用入栈保存。
除了用户模式和系统模式共用一组R13,R14,其余每种模式都私有自己的R13,R14,因为在每种模式下都有自己的栈空间用于执行程序,在执行程序过程中还要保存返回地址,这样可以保证在进入不同模式时,当前模式下栈空间不被破坏。比如:网卡因为数据到达,产生了中断进入中断模式,在中断模式下有自己的中断处理例程(ISR),ISR在执行时要用到栈空间,因此要使用R13,R14。中断处理完成后,返回用户模式下,要继续执行被网卡中断信号中断的执行程序。
用户模式和系统模式为什么要共用一组R13,R14呢?这是因为,在特权模式下可以自由切换工作模式,但是如果切换到用户模式下,就不能再切换到特权模式了,这是CPU为操作系统提供的保护机制,但是有的时候就需要切换到用户模式下去使用其R13,R14寄存器,比如当操作系统的进程进行上下文切换时,如果用户模式和系统模式共用一组寄存器,那么可以切换到系统模式下(系统模式是特权模式)进行操作。
所有R15和CPU同时只能处理一条指令,在取指时,有一个CPSR表示当前CPU的状态即可。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top