CPSR

 

CPSR

 

2种运行状态:
ARM
状态(32位)、Thumb状态(16位),两种状态之间可任意切换;

7种运行模式:
用户模式usr 
快速中断fiq

外部中断irq
管理svc
系统sys
数据访问中止abt
未定义指令中止und

寄存器组织:
ARM
状态:
R0
R14 通用寄存器
         R0
R7   未分组寄存器,所有7种运行模式下指向同一物理寄存器,在中断或异常处理等模式转换时,需防止寄存器中数据的破坏。
         R8
R14  分组 根据不同的运行模式访问不同的物理寄存器
R8
R12  fiq外,其余同usr模式
R13
R14 usrsys外,其余有各自分组模式
R15 PC  
程序计数器
R16     
状态寄存器 
        CPSR
通用
              SPSR
usrsys外,用于异常保护的CPSR的备份,异常时,保存CPSR值,异常退出时,将该值恢复到CPSR
Thumb
状态:
R0
R7 通用
SP
对应ARM状态R13
LR
对应ARM状态R14
PC
对应ARM状态R15
CPSR
SPSRARM状态同

R13
SP stack pointer 堆栈指针,用于取指令操作
R14
LR Load register 用于程序调用
PC
-程序计数器,总是指向当前指令的下两条指令,即PC值为当前指令地址值加8个字节

程序状态寄存器:
CPSR
每一中模式下访问同一物理寄存器
SPSR
usrsys外,用于异常保护的CPSR的备份,异常时,保存CPSR值,异常退出时,将该值恢复到CPSR,每一中异常运行模式(除usrsys)有各自的物理寄存器。其功能:保存ALU中的当前操作信息;控制允许和禁止中断;设置处理器的运行模式


统计上述,ARM处理器共有:
8
个未分组(R0R7)寄存器共享物理寄存器
2×5
个分组物理寄存器:fiq模式分别独享一个fiq物理寄存器(对应R8_fiqR14_fiq),其余模式分别共享一个通用物理寄存器
6
个堆栈指针物理寄存器,R13×6
6
LR物理寄存器      R14×6
1
个程序计数物理寄存器 
6
个状态物理寄存器:一个CPSR5SPSR

8
10661+6 = 37个物理寄存器

Thumb
状态:
出去R8R14未分组部分
SP
对应 ARM状态R13
LR
对应 ARM状态R14
PC
对应 ARM状态R15
CPSR
对应ARM状态CPSR
SPSR
对应ARM状态SPSR
程序状态寄存器位标识:

条件标识位        保留        控制位
31        30        29        28        27        26        25        24        …        8        7        6        5        4        3        2        1        0
N        Z        C        V        .        .        .                …                I        F        T        M4        M3        M2        M1        M0

说明:
条件标识位[31 : 28]:它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数指令都是有条件的执行的,在Thumb状态下,只有分支指令被有条件的执行
N
:当用两个补码表示的带符号数进行运算时,N=1 表示运算的结果为负数;N=0 表示运算的结果为正数或零;
Z
Z=1 表示运算的结果为零;Z=0表示运算的结果为非零;
C
:可以有4种方法设置C的值:
加法运算(包括比较指令CMN):当运算产生了进位时(无符号数溢出),C=1,否则C=0减法运算(包括比较指令CMP):当运算时产生了借位(无符号数溢出),C=0,否则C=1
对于包含移位操作的非加/减运算指令,C为移出值的最后一位。
对于其他的非加/减运算指令,C的值通常不改变。
V
:可以有2种方法设置V的值:
对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。
对于其他的非加/减运算指令,C的值通常不改变。
保留位[27 : 8]:当改变PSR中的条件码标志位或者控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。保留位将用于ARM版本的扩展。

控制位[7 : 0]PSR的低8位(包括IFTM[40])称为控制位,当发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。 

I
I =1 表示禁止外部(硬件)中断(IRQ
F
F=1 表示快速中断(FIQ
T
:反映处理器的运行状态。
对于ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。对于ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。

运行模式位M[4 : 0]M0M1M2M3M4是模式位。这些位决定了处理器的运行模式。具体含义如表2-2所示:
2-2        运行模式位M[40]的具体含义
M[4
0]        处理器模式        可访问的寄存器
0b10000       
用户模式        PCCPSR,R0-R14
0b10001        FIQ
模式        PCCPSR, SPSR_fiqR14_fiq-R8_fiq, R7R0
0b10010        IRQ
模式        PCCPSR, SPSR_irqR14_irq,R13_irq,R12R0
0b10011       
管理模式        PCCPSR, SPSR_svcR14_svc,R13_svc,,R12R0,
0b10111       
中止模式        PCCPSR, SPSR_abtR14_abt,R13_abt, R12R0,
0b11011       
未定义模式        PCCPSR, SPSR_undR14_und,R13_und, R12R0,
0b11111       
系统模式        PCCPSRARM v4及以上版本), R14R0
由表2-2可知,并不是所有的运行模式位的组合都是有效地,其他的组合结果会导致处理器进入一个不可恢复的状态

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值