Arm 程序状态寄存器

news/2025/2/6 9:07:27/

/*
 * 程序状态寄存器
 */
    CPSR(当前程序状态寄存器)可以在任何处理器模式下被访问。每一种模式下都有一个专用的物理状态寄存器,

    称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。

    在异常退出时,可以用 SPSR中保存的值来恢复CPSR。CPSR的具体格式如下。

    31  30 29 28 27 26 7 6 5 4 3 21 0
    
    N Z C V Q DNMLRAZ I F I M4 M3 M M0


    1)条件标志位

        N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。

        大部分的ARM指令可以依据CPSR中的这些标志位来选择性地执行。
        
        N  本位设置成当前指令运算结果的bit[31]的值
            当两个补码表示的有符号整数运算时,N=1表示运算的结果为负数,N=0 表示结果为正数或零
        
        Z
            Z=1表示运算结果是0,Z=0表示运算结果不是零
            对于CMP指令,Z=1表示进行比较的两个数大小相等
        
        C
            在加法指令中(包括比较指令CMN),结果产生进位了,则C=1,表示无符号数运算发生上溢出,其他情况下C=0
            在减法指令中(包括比较指令CMP),结果产生借位了,则C=0,表示无符号数运算发生下溢出,其他情况下C=1
            对于包含移位操作的非加/减法运算指令,C中包含最后一次被溢出的位的数值,
            对于其他非加/减法运算指令,C位的值通常不受影响
        
        V
            对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出
            其他的指令通常不影响V位
    
    2)Q标志位

        在ARM v5的E系列处理器中,CPSR的bit[27]称为Q标志位,主要用于指示增强的DSP指令是否发生了溢出,
        同样的,SPSR的bit[27]也称为Q标志位,用于在异常中断发生时保存和恢复CPSR中的Q标志位。

    3)CPSR中的控制位

        CPSR的低8位I、F、T及M[4:0]统称为控制位,当异常中断发生时这些位发生变化。
        在特权级的处理器模式下,软件可以修改这些控制位。

        ① I中断禁止位

            当I=1时禁止IRQ中断。
            当F=1时禁止FIQ中断。
            通常一旦进入中断服务程序可以通过置位I和F来禁止中断,但是在本中断服务程序退出前必须恢复原来I、F位的值。

        ② T控制位,用来控制指令执行的状态,即说明本指令是ARM指令还是Thumb指令。

            对于不同版本的ARM处理器,T控制位的含义是有些不同的。
            
            对于ARM v3及更低的版本和ARM v4的非T系列版本的处理器,没有ARM和Thumb指令的切换,所以T始终为0。
            对于ARM v4及更高版本的T系列处理器,T控制位含义如下。
            当T=0,表示执行ARM指令。
            当T=1,表示执行Thumb指令。

            对于ARM v5及更高的版本的非T系列处理器,T控制位的含义如下。
            当T=0表示执行ARM指令。
            当T=1表示强制下一条执行的指令产生为定义指令中断。

        ③ M 控制位

            控制位M[4:0]称为处理器模式标识位

            M[4:0]
             处理器模式
             可访问的寄存器
            
            0b10000
             User
             PC,R14~R0,CPSR
            
            0b10001
             FIQ
             PC,R14_fiq~R8_fiq,R7~R0,CPSR,SPSR_fiq
            
            0b10010
             IRQ
             PC,R14_irq~R13_irq,R12~R0,CPSR,SPSR_irq
        
            0b10011
             Supervisor
             PC,R14_svc~R13_svc,R12~R0,CPSR,SPSR_svc
            
            0b10111
             Abort
             PC,R14_abt~R13_abt,R12~R0,CPSR,SPSR_abt
            
            0b11011
             Undefined
             PC,R14_und~R13_und,R12~R0,CPSR,SPSR_und
            
            0b11111
             System
             PC,R14~R0,CPSR(ARM v4及更高版本)
            
        ④CPSR的其他位用于将来ARM版本的扩展,程序可以先不操作这些位。


http://www.ppmy.cn/news/479938.html

相关文章

TC8:SOMEIPSRV_RPC_08-10

SOMEIPSRV_RPC_08: Do not reply to messages already carrying an error 目的 对于携带错误的SOME/IP消息(return code 0x01 - 0x1f),不应该用SOME/IP Error消息回答 测试步骤 DUT CONFIGURE:启动具有下列信息的服务 – Service ID:SERVICE-ID-1 – Instance数量:1Test…

《地平线:零之曙光》——游戏体验和主观评价

《地平线:零之曙光》——游戏体验与主观评价 文章存档格式优化,写于:2020/08/17 简介 ​ 《地平线:零之曙光》是一款主打机械怪物狩猎的ARPG游戏,玩家操作女主角“埃洛伊”在距今一千多年后的世界追寻自己的身世之谜…

游戏装备锻造(打铁)

游戏装备锻造(打铁) 首先本人萌新,能力有限(还请多多指教) ​ 根据个人喜好更改锻造成功率(啊哈哈哈) ​ 今天你熟了吗?(热,本人身在四大火炉之一--------…

刀剑英雄与服务器连接中断,服务器全面升级!遇见更强的《刀剑》

辞别2010,迎来崭新的2011,中国原创首款武侠竞技网游《刀剑英雄》将在新的一年里蓄积能量,重新出发!2011年上半年,我们将对所有服务器进行全面升级,争取有效解决困扰大家的卡机问题,从核心部分提…

DNF 单机游戏 手机游戏 网络游戏 推荐游戏 TXT 小说 外挂 辅助

DNF 单机游戏 手机游戏 网络游戏 推荐游戏 TXT 小说 外挂 辅助 PS: 纯粹拉流量用的.勿喷!

Nginx 四层代理mysql、nacos、redis等服务——筑梦之路

Nginx 七层和四层负载均衡——筑梦之路_nginx4层和7层负载均衡配置_筑梦之路的博客-CSDN博客 首先要明确的是mysql、nacos、redis等服务主要使用的是tcp协议,虽然也可以使用七层代理去暴露nacos服务,但仍然是有区别的。这里主要介绍这几种服务的代理配置…

6名嫌犯兜卖假苹果手机遭拒改硬抢

标报讯 (记者 苦浩 通信员 宁彤彤 唐玉官)昨日,北京市公安局私接总队通报,6名涉嫌以抛售假iphone4实行欺骗、抢劫的嫌信己被警方把持,3我未被刑拘。当团伙损害的对象重要是未成年人。 8月5日和8月12日,警方持续交到报案&#xff0…

苹果手机扩容对手机好不好?

苹果手机扩容对于手机的寿命是不是会有影响?我们先不回答这个问题,我们要回答的是——苹果手机为何要扩容。 我们在购买苹果手机的时候,你会发现它的价格过高,而在这种情况下,我们只能选择内存相对较小的苹果手机&…