1)
ARM处理器有37+3个32位寄存器:其中有32个通用寄存器,只有一个PC指针寄存器,一般习惯用R15来指向正在取指的指令,而不是正在执行的指令。(这里涉及到arm处理器的流水线操作流程,下面在介绍),七个状态寄存器:但是只有一个CPSR寄存器(用来表示当前程序状态寄存器),6个SPSR寄存器(用来保存备份当前程序状态的异常数据)。
处理器在工作时有8种不同的工作模式,对应的每一种处理器模式都有一组相应的寄存器组:
这里USER/SYS工作模式共用一个寄存器组,但是USER模式没有特权,而且没有对应的SPSR寄存器
当前处理的模式决定了哪组寄存器可以以操作,任何模式都可以存取的寄存器。
(1)相应的R0~R12
(2)相应的R13(SP,栈顶指向)和R14(LR,链接地址寄存器,用来记录程序下次将要执行指令的地址)以及PC指针寄存器(一般习惯用R15来指向正在取指的指令,而不是正在执行的指令)
(3)相应的CPSR寄存器(能够表示当前程序的状态反应处理器当前的工作模式从而设置它的某些位来改变处理器的模式和异常模式的设置以及标准位的反映和设置)
(4)在特权模式下还可以存取相应的异常模式时CPSR寄存器
arm处理器 的 8种工作模式:
ARM处理器按照一系列的步骤来执行每一条指令:简单的一般使用3级流水线
(1)取指令:从寄存器加载一条指令
(2)译码:识别被执行的指令,并为下一个周期准备数据电路的控制信号,在这一级别,指令占有译码逻辑,不占据数据通路
(3)执行:处理指令并将结果写回寄存器
CPSR寄存器位的分配:
其中N(负数标志)Z(零标志)C(进位标志)V(溢出标志)/ / 其中0~4位标志模式为I(IRQ使能位)F(FIQ使能位)T(状态位)
N:当N = 1 时表示负数,N = 0表示整数或者零
控制位:
1)中断禁止位:当I或F = 1 时 ,表示中断进制
2)状态控制位:当T = 0时表示处于ARM状态
3)模式控制位:
MODE(以下为二进制) |
||
10000 |
用户模式 |
PC,CPSR,R0~R14 |
10001 |
FIQ |
PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R7~R0 |
10010 |
IRQ |
PC,CPSR,SPSR_irq,R14_irq~R13_irq,R12~R0 |
10011 |
管理模式(svc) |
PC,CPSR,SPSR_svc,R14_svc~R13_svc,R12~R0 |
10111 |
终止模式 |
PC,CPSR,SPSR_abt,R14_abt~R13_abt,R12~R0 |
11011 |
未定义 |
PC,CPSR,SPSR_und,R14_und~R13_und,R2~R0 |
11111 |
系统模式(sys) |
PC,CPSR,R14 ~R0 |