ARM处理器包含1个当前程序状态寄存器CPSR和5个程序状态保存寄存器SPSR。所有运行模式下都可以访问当前程序状态寄存器。每种异常模式都有对应的程序状态保存寄存器,用户模式和系统模式不属于异常,因而没有程序状态保存寄存器。程序状态寄存器的定义如图1-7所示,其主要功能包括:
●保存算术逻辑单元ALU中的当前操作信息。
●控制允许和禁止中断。
●设置处理器的运行模式。
图1-7 程序状态寄存器
1.条件码标志
图1-5中的N、Z、C、V均为条件码标志位,它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。
条件码标志位的具体含义如表1-2所列。
表1-2 条件码标志的具体含义
2.控制位(www.daowen.com)
程序状态寄存器的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时,这些位可以被改变。如果处理器在特权模式下运行,这些位也可以由程序修改。
中断禁止位I、F:I=1表示禁止IRQ中断,F=1表示禁止FIQ中断。
标志位I:该位反映处理器的运行状态,T=0表示运行于ARM状态,T=1表示运行于Thumb状态。
运行模式位M[4:0]:M0、M1、M2、M3、M4是运行模式位,它们的状态决定了处理器的运行模式。具体含义如表1-3所列。
表1-3 运行模式位M[4:0]的具体含义
(续)
由表1-3可知,并不是所有运行模式位的组合都能定义一个有效的处理器模式,其他组合可能会导致处理器进入一个不可恢复的状态。
程序状态寄存器中的其余位为保留位,保留位用于将来ARM版本的扩展。当改变寄存器中的条件码标志位或控制位时,保留位不要被改变,在程序中也不要使用保留位来存储数据。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。