arm状态寄存器CPSR的一些知识

 汇编语言中
1)DCD(或DCDU)
    DCD(或DCDU)伪指令用于分配一片连续的字存储单元并用伪指令中指定的表
达式初始化。其中,表达式可以为程序标号或数字表达式。DCD也可用“&”代替。


用DCD分配的字存储单元是字对齐的,而用DCDU分配的字存储单元并不严格字对齐。
使用示例:
DataTest DCD 4,5,6 ;分配一片连续的字存储单元并初始化。


2)状态寄存器
31 30 29 28 27 26 25 24 …… 8  7  6  5  4  3  2  1  0
N  Z  C  V  Q  +  +  +       +  I  F  T  M4 M3 M2 M1 M0


a)条件码标志
N Z C V均为条件码标志位,它们的内容可以被算术或逻辑运算的结果所改变,并且可 以决定某条指令是否被执行。

标志位 含义
  N 正、负标志位,N=1表示运算的结果为负数;N=0表示运算的结果为正数或零
  Z 零标志位,Z=1表示运算的结果为零,Z=0表示运算的结果为非零(真)
  C 进位标志,加法(包括CMN):产生进位时C=1,否则C=0;借位标志,减法
(包括CMP):产生借位C=0,否则C=1
  V 溢出标志,V=1表示有溢出,V=0表示没有溢出

  Q 在ARMv5及以上版本的E系列处理器中,用Q标志位指示怎强的DSP运算指令是否发生了溢出,其他版本的处理器中,Q是未定义标志


b)控制位
CPSR的低8位(包括I F T和M[0:4])称为控制位,当发生异常时,这些可以呗改变,
如果处理器运行特权模式(非用户模式),这些为也可以改变。
1,中断禁止位:中断禁止位包括I、F,用来禁止或允许IRQ和FIQ两类中断,当I=1时,表示禁止IRQ中断,I=0,表示允许IRQ中断;当F=1时,表示禁止FIQ
      中断,F=0时,表示允许FIQ中断;
2,T标志位:T标志位用来标识/设置处理器的工作状态。对于ARM体系结构v4及以上的版本T系列处理器,当该位为1时,程序运行在Thumb状态;当改位为0                   时,表示运行在ARM状态。ARM指令集和Thumb指令集均有切换处理器状态的指令。这些指令通过改变T位的值来实现在两种工作状态的切换,但是ARM微处               理器在开始执行代码时,必须处于ARM状态。

3,工模式位:工模式位[4:0]用来标识或设置处理器的工作模式,具体如下


M[0:4]        处理器模式  可访问的寄存器
10000 用户模式 PC,CPSR,R0-R14
10001 FIQ模式         PC,CPSR,SPSR_fiq,R14_fiq-R8_fiq,R7-R0
10010 IRQ模式 PC,CPSR,SPSR_irq,R14_irq,R13_irq,R12-R0
10011 管理模式 PC,CPSR,SPSR_svr,R14_svr,R13_svr,R12-R0
10111 中止模式 PC,CPSR,SPSR_abt,R14_abt,R13_abt,R12-R0
11011 未定义模式
11111 系统模式 PC,CPSR,R14-R0


































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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值