31 | 30 | 29 | 28 |
|
| 27 | ~ | 8 |
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
N | Z | C | V | 保留 | I | F | T | M4 | M3 | M2 | M1 | M0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
N | Negative/Less Than |
|
|
|
|
| I |
| IRQ disable |
Z | Zero |
|
|
|
|
|
|
|
|
| F |
| FIQ disable |
C | Carry/Borrow/Extend |
|
|
|
|
| T |
| State bit |
|
V | Overflow |
|
|
|
|
|
|
|
| M0~4 | Mode bits |
|
1、条件码标志
N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。条件码标志各位的具体含义如下表所示:
标志位 | 含 义 |
N | 当用两个补码表示的带符号数进行运算时,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零 |
Z | Z=1表示运算的结果为零,Z=0表示运算的结果非零。 |
C | 可以有4种方法设置C的值: |
-加法运算(包括CMP):当运算结果产生了进位时(无符号数溢出),C=1,否则C=0。 |
-减法运算(包括CMP):当运算时产生了借位时(无符号数溢出),C=0,否则C=1。 |
-对于包含移位操作的非加/减运算指令,C为移出值的最后一位。 |
-对于其它的非加/减运算指令,C的值通常不会改变。 |
V | 可以有2种方法设置V的值: |
-对于加减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出 |
-对于其它的非加/减运算指令,V的值通常不会改变。 |
Q | 在ARM V5及以上版本的E系列处理器中,用Q标志位指示增强的DSP运算指令是否发生了溢出。在其它版本的处理器中,Q标志位无定义 |
|
在ARM状态下,绝大多数的指令都是有条件执行的;在THUMB状态下,仅有分支指令是条件执行的。
2 控制位
CPSR的低8位(包括I、F、T和M[4:0])称为控制位,当发生异常时这些位可以被改变。如果处理器运行于特权模式时,这些位也可以由程序修改。
·中断禁止位I、F:置1时,禁止IRQ中断和FIQ中断。
·T标志位:该位反映处理器的运行状态。当该位为1时,程序运行于THUMB状态,否则运行于ARM状态。该信号反映在外部引脚TBIT上。在程序中不得修改CPSR中的TBIT位,否则处理器工作状态不能确定。
·运行模式位M[4:0]:这几位是模式位,这些位决定了处理器的运行模式。具体含义如下表所示:
·保留位:CPSR中的其余位为保留位,当改变CPSR中的条件码标志位或者控制位时,保留位不要改变,在程序中也不要用保留位存储数据。保留位将用于ARM版本的扩展。
M[4:0] | 处理器模式 | ARM模式可访问的寄存器 | THUMB模式可访问的寄存器 |
0b10000 | 用户模式 | PC,CPSR,R0~R14 | PC,CPSR,R0~R7,LR,SP |
0b10001 | FIQ模式 | PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R0~R7 | PC,CPSR,SPSR_fiq,LR_fiq,SP_fiq,R0~R7 |
0b10010 | IRQ模式 | PC,CPSR,SPSR_irq,R14_irq~R13_irq,R0~R12 | PC,CPSR,SPSR_irq,LR_irq,SP_irq,R0~R7 |
0b10011 | 管理模式 | PC,CPSR,SPSR_svc,R14_svc~R13_svc,R0~R12 | PC,CPSR,SPSR_svc,LR_svc,SP_svc,R0~R7 |
0b10111 | 中止模式 | PC,CPSR,SPSR_abt,R14_abt~R13_abt,R0~R12 | PC,CPSR,SPSR_abt,LR_abt,SP_abt,R0~R7 |
0b11011 | 未定义模式 | PC,CPSR,SPSR_und,R14_und~R13_und,R0~R12 | PC,CPSR,SPSR_und,LR_und,SP_und,R0~R7 |
0b11111 | 系统模式 | PC,CPSR,R0~R14 | PC,CPSR,LR,SP,R0~R74 |
关键字:ARM中 程序状态寄存器 CPSR
引用地址:
ARM中的程序状态寄存器(CPSR)
推荐阅读最新更新时间:2024-10-24 19:09
ARM中的程序状态寄存器(CPSR)
31 30 29 28 27 ~ 8 7 6 5 4 3 2 1 0 N Z C V 保留 I F T M4 M3 M2 M1 M0 N Negative/Less Than I IRQ disable Z Zero F FIQ disable C Carry/Borrow/Extend T State bit V Overflow M0~4 Mode bits 1、条件码标志 N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的
[单片机]
ARM中的程序状态寄存器CPSR
M 处理器模式 ARM模式可访问的寄存器 THUMB模式可访问的寄存器 0b10000 用户模式 PC,CPSR,R0~R14 PC,CPSR,R0~R7,LR,SP 0b10001 FIQ模式 PC,CPSR,SPSR_fiq,R14_fiq~R8_fiq,R0~R7 PC,CPSR,SPSR_fiq,LR_fiq,SP_fiq,R0~R7 0b10010 IRQ模式 PC,CPSR,SPSR_irq,R14_irq~R13_irq,R0~R12 PC,CPSR,SPSR_irq,LR_irq,SP_irq,R0~R7
[单片机]
ARM的7种工作模式、37个通用寄存器、CPSR程序状态寄存器
一、ARM 采用的是32位架构 1、ARM约定 Byte:8 bits Halfword:16 bits (2 byte) Word:32 bits (4 byte) 2、大部分ARM core 提供 ARM 指令集(32-bit) 每条指令都是4个字节? Thumb 指令集(16-bit ) Thumb2指令集(16 & 32bit) 二、ARM的7种基本工作模式 普通模式(Normal) (1)User:非特权模式,大部分任务执行在这种模式 特权模式(Privilege) (2)FIQ:当一个高优先级(fast) 中断产生时将会进入这种模式 (3)IRQ:当一个低优先级
[单片机]
基于ARM9程序状态寄存器CPSR
定义:程序状态寄存器; 功能:反映数据运算状态,控制系统模式等; 特点:程序状态寄存器不属于通用寄存器; 关于CPSR的访问,ARM专门为其设立了两条指令: MRS:CPSR到通用寄存器传递数据指令; MSR:通用寄存器到CPRS传递数据指令; (1)MSR 通用寄存器→CPSR 格式:MSR{条件} CPSR | SPSR_field,寄存器Rm或立即数 功能:恢复或改变CPSR的值。 CPRS | SPRS:尖括号内只能是CPRS或SPRS指令,这取决于当前处理器工作模式; field域:用于设置CPSR中需要操作的位;(下面详细介绍) CPSR位域: field域的表示: 为条件标志位域,用 f 表示 为状态位域,用
[单片机]
ARM处理器的程序状态寄存器(CPSR,SPSR)访问指令
ARM 微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送 数据,程序状态寄存器访问指令包括以下两条: MRS 程序状态寄存器到通用寄存器的数据传送指令 MSR 通用寄存器到程序状态寄存器的数据传送指令 1、 MRS 指令 MRS 指令的格式为: MRS{条件} 通用寄存器,程序状态寄存器(CPSR 或SPSR) MRS 指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下几种情况: - 当需要改变程序状态寄存器的内容时,可用MRS 将程序状态寄存器的内容读入通用寄存 器,修改后再写回程序状态寄存器。 - 当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态
[单片机]
ARM状态寄存器CPSR SPSR
订阅专栏 ARM的状态寄存器格式如上 位 为条件标志位域,用f 表示; 位 为状态位域,用s 表示; 位 为扩展位域,用x 表示; 位 为控制位域,用c 表示; 显然,常用的只有条件标志位域f和控制位域c。 如果需要操作状态寄存器,比如切换处理器模式,就需要修改控制位域中的模式位。 MRS: 程序状态寄存器到通用寄存器的数据传送指令 MSR: 通用寄存器到程序状态寄存器的数据传送指令 附: M控制位控制处理器模式,具体含义如下: M 处理器模式 可访问的寄存器 ob10000 user pc,r14~r0,CPSR 0b10001 FIQ PC,R14_FIQ-R8_FIQ,R7~R0,CPSR,SP
[单片机]
ARM状态寄存器 CPSR SPSR
CPSR:程序状态寄存器(current program status register) ,cpsr在用户级编程时用于存储条件码。CPSR包含条件码标志,中断禁止位,当前处理器模式以及其他状态和控制信息。 SPSR:程序状态保存寄存器。SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。 CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢
[单片机]
影响CPSR状态寄存器的ARM汇编指令总结
最近学习了ARM寄存器寻址方式和ARM指令,现在总结如下: 1、影响CPSR状态寄存器的ARM汇编指令 (1)、带S的指令有 MOVS-- 数据传送指令(只能用在寄存器和寄存器之间) MVNS-- 数据传送指令(和mov区别是,不仅进行数据传输,还进行数据取反) ADDS-- 加法指令 SUBS-- 减法指令 MULS-- 乘法指令 ANDS-- 逻辑与指令(相同是1,不同是0,区别 按位与TST 指令) ORRS-- 逻辑或指令(不同是0,相同是1,区别 按位与TST 指令) BICS-- 设置某一位为1 (2)、另外两个指令 CMP-- 比较指令 TST-- 安位与指令
[单片机]