ARM 寄存器

您所在的位置:网站首页 ir指令寄存器全称 ARM 寄存器

ARM 寄存器

2024-07-09 10:56| 来源: 网络整理| 查看: 265

CPSR简介:

全称:程序状态寄存器(current program status register) 用户级编程时用于存储条件码 任何处理器模式下被访问 两种运行状态:ARM状态(32位)、Thumb状态(16位),两种状态之间可任意切换 七种运行模式:usr(用户)、fiq(快速中断)、irq(外部中断)、svc(管理)、sys(系统)、abt(数据访问中止)、und(未定义指令中止) 寄存器组织(ARM状态): R0~R14 通用寄存器 R0~R7 未分组寄存器,所有7种运行模式下指向同一物理寄存器,在中断或异常处理等模式转换时,需防止寄存器中数据的破坏。 R8~R14 分组 根据不同的运行模式访问不同的物理寄存器 R8~R12 除fiq外,其余同usr模式 R13~R14 除usr、sys外,其余有各自分组模式 R15 PC 程序计数器 R16 状态寄存器 注:CPSR通用 SPSR 除usr、sys外,用于异常保护的CPSR的备份,异常时,保存CPSR值,异常退出时,将该值恢复到CPSR

SPSR简介:

全称:程序状态保存寄存器(saved program status register) 每一种处理器模式下都有一个状态寄存器SPSR,用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。 当特定的异常中断发生时,这个寄存器存放CPSR的内容。 在异常中断退出时,可以用SPSR来恢复CPSR。 由于用户模式和系统模式不是异常中断模式,所以他没有SPSR。 注:当用户在用户模式或系统模式访问SPSR,将产生不可预知的后果。 一、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} _, #immed_8r MSR{cond} _, Rm where: cond is an optional condition code. is either CPSR or SPSR. specifies the field or fields to be moved. 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

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3