zoukankan      html  css  js  c++  java
  • 详细解读ARM寄存器之CPSR【转】

    本文转载自:https://blog.csdn.net/david_luyang/article/details/6276533

    详细解读ARM寄存器之CPSR

    整理人:卢阳

    QQ:820927872

    一、CPSR概述

          ARM处理器共有37个寄存器。这37个寄存器按其在用户编程中的功能划分,可分为2类寄存器,即31个通用寄存器和6个状态寄存器。这6个状态寄存器在ARM公司文件中其名称分别为:CPSR、SPSR_svc、SPSR_abt、SPSR_und、SPSR_irq和SPSR_fig。这12的作用分别如图1所示:

     程序状态寄存器

          所有处理器模式下都可访问当前程序状态寄存器CPSR。CPSR中包含条件码标志、中断禁止位、当前处理器模式以及其他状态和控制信息。在每种异常模式下都有一个对用的程序状态寄存器SPSR。当异常出现时,SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。

    (1)条件码标志

    N、Z、C、V,最高4位称为条件码标志。ARM的大多数指令可以条件执行的,即通过检测这些条件码标志来决定程序指令如何执行。

    各个条件码的含义如下:

    N:在结果是有符号的二进制补码情况下,如果结果为负数,则N=1;如果结果为非负数,则N=0。

    Z:如果结果为0,则Z=1;如果结果为非零,则Z=0。

    C:其设置分一下几种情况:

                   对于加法指令(包含比较指令CMN),如果产生进位,则C=1;否则C=0。

                   对于减法指令(包括比较指令CMP),如果产生借位,则C=0;否则C=1。

                   对于有移位操作的非法指令,C为移位操作中最后移出位的值。

                   对于其他指令,C通常不变。

    V:对于加减法指令,在操作数和结果是有符号的整数时,如果发生溢出,则V=1;如果无溢出发生,则V=0;对于其他指令,V通常不发生变化。

    (2)控制位的作用在图1中可以看出,在这里就不阐述了。

    二:CPSR与CPSR_c的区别

          CPSR有4个8位区域:标志域(F)、状态域(S)、扩展域(X)、控制域(C)

          MSR - Load specified fields of the CPSR or SPSR with an immediate constant, or from the contents of a general-purpose register.

         Syntax:

         MSR{cond} <psr>_<fields>, #immed_8r MSR{cond} <psr>_<fields>, Rm where: cond is an optional condition code. <psr> is either CPSR or SPSR. <fields> specifies the field or fields to be moved. <fields> can be one or more of:

    c control field mask byte (PSR[7:0]) x extension field mask byte (PSR[15:8]) s status field mask byte (PSR[23:16) f flags field mask byte (PSR[31:24]). immed_8r is an expression evaluating to a numeric constant. The constant must correspond to an 8-bit pattern rotated by an even number of bits within a 32-bit word. Rm is the source register.

          C 控制域屏蔽字节(psr[7:0])
          X 扩展域屏蔽字节(psr[15:8])
          S 状态域屏蔽字节(psr[23:16])
          F 标志域屏蔽字节(psr[31:24])
    常用于MRS或MSR指令,用于psr中的值转移到寄存器或把寄存器的内容加载到psr中.
    如:

    MSR CPSR_c,#0xd3

  • 相关阅读:
    RabbitMQ
    连接池,为什么要使用连接池?
    mac 安装arcanist
    感触
    UDP socket
    Servlet过滤器
    PL、SQL
    springmvc 文件上传实现(不是服务器的)
    注解spring
    excel工具类
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9429020.html
Copyright © 2011-2022 走看看