| |
所有处理器模式下都可访问当前的程序状态寄存器CPSR。CPSR包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。ARM程序状态寄存器如图所示。
在每种异常模式下都有一个对应的物理寄存器——程序状态保护寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后回复异常发生时的工作状态。
下面介绍CPSR和SPSR的格式
1) 条件码标志
N、Z、C、V,最高4位为条件码标志。ARM的大多数指令可以是条件执行的,即通过检测这些条件码标志来决定程序指令如何执行。
在数据处理指令中,除了比较指令和测试指令可设置状态寄存器的条件码外,大多数数据指令都可通过在指令助记符后加S来设置状态寄存器的条件码。这在讲解数据处理指令中有详细的介绍。
各个条件码的含义如下:
N——在结果是有符号的二进制补码情况下,如果结果为负数,则N=1;如果结果为非负数,则N=0.
Z——如果结果为0,则Z=1,;如果结果为非0,则Z=0.
C——其设置分为以下几种情况:
对于加法指令(包括比较指令CMN),如果产生进位,则C=1;否则C=0.
对于减法指令(包括比较指令CMP),如果产生借位,则C=0;否则C=1.
对于有移位操作的非加减法指令,C为移位操作中最后移出位的值。
对于其他指令,C通常不变。
V——其设置分为以下2种情况:
对于加减法指令,在操作数和记过是有符号飞整数时,如果发生溢出,则V=1;如果无溢出发生,则V=0.
对于其他指令,V通常不发生变化。
2) 控制位
最低8位I、F、T和M[4:0]位用作控制位。当异常出现时,改变控制位。当处理器在特权模式下时,也可由软件改变。
(1) 中断禁止位
若I=1,则禁止IRQ中断;若F=1,则禁止FIQ中断。
(2) T位
若T=0,则指示ARM执行;若T=1,则指示Thumb执行。
(3) M模式位
M0、M1、M2、M3和M4(M[4:0])是模式位,这些决定处理器的工作模式。
3) 其他位
程序状态寄存器的其他位保留,用作以后的扩展。
凌阳教育,专注嵌入式人才培养13年,为大量企业输送优质嵌入式人才,深受企业的认可。想了解更多嵌入式学习资料请点击www.sunplusedu.com获得更多嵌入式免费学习资料的下载。