首页 > 其他分享 >ARM 寄存器——CPSR/SPSR介绍

ARM 寄存器——CPSR/SPSR介绍

时间:2024-03-29 14:34:24浏览次数:20  
标签:状态 SPSR 指令 模式 寄存器 ARM CPSR

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} <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

 

标签:状态,SPSR,指令,模式,寄存器,ARM,CPSR
From: https://www.cnblogs.com/FireLife-Cheng/p/18103783

相关文章

  • 【Linux系列-1】-- 必会的 ARM 汇编指令
    原创:lvy嵌入式学习规划学习Linux系统启动流程,必须熟悉几个汇编指令这里不是最全的,只列出一些最常用的汇编指令。一.数据处理指令1.数据传送指令【MOV指令】把一个寄存器的值(立即数)赋给另一个寄存器,或者将一个常量赋给寄存器。MOV指令的格式为:MOV目的寄存器,源操作数M......
  • ARM 芯片的嵌入式代码移植注意事项
    嵌入式系统在我们的日常生活中无处不在,从智能手机和可穿戴设备到汽车和工业控制系统。ARM架构是嵌入式系统中广泛使用的处理器架构,以其高性能、低功耗和成本效益而闻名。然而,在将代码从一个ARM芯片移植到另一个ARM芯片时,需要注意一些关键事项,以确保移植的成功。处理器......
  • jmeter linux arm系统上无法启动
    1.jmeter5.4.1在arm系统上压测:报错Anerroroccurred:ErrorinNonGUIDriverProblemloadingXMLfrom:'/home/telpo/hbie/apache-jmeter-5.6.3/apache-jmeter-5.6.3/hbieCaseface1vn.jmx'.Cause:CannotResolveClassException:kg.apc.jmeter.threads.SteppingThreadG......
  • T555Pulse 555做为多谐振荡器的计算器A calculator for multi harmonic oscillators
    本软件很便宜,就是2包烟的钱。可以用来计算555的普通多谐震荡器电路的电阻、电容、周期、频率、高电平时间,低电平时间、占空比这类的东西的相互换算。Thissoftwareisverycheap,itcostsonly2packsofcigarettes.Itcanbeusedtocalculatethemutualconversionofr......
  • 鸿蒙传来新消息!国内最大的聊天平台将接入HarmonyOS
    鸿蒙新消息传来,就在3月19日,中国首个鸿蒙生态创新中心在深圳正式成立。首先我们需要知道的是,鸿蒙生态创新中心直接戳破了坊间流传的所谓腾讯微信、QQ不会接入HarmonyOS的谣言。二者都是国民级应用,此前已有消息表示微信、QQ/QQ音乐包括王者荣耀等等在内的软件都将以原生应用......
  • [转帖]ARM发布新一代高性能处理器N3/V3
    https://zhuanlan.zhihu.com/p/371282138 就在2月21日,ARM发布了新一代面向服务器的高性能处理器N3和V3,N系列平衡性能和功耗,而V系列则注重更高的性能。此次发布的N3,单个die最高32核(并加入到CCS,ComputeSubsystems,包含Core,SystemIp等),以CCS来讨论,每瓦性能比上一代提升20%-5......
  • [转帖]Arm更新Neoverse产品路线图:N3/V3内核曝光,能效及AI性能大涨
    https://new.qq.com/rain/a/20240222A0495O00 +关注2月22日,半导体IP大厂Arm宣布推出新一代ArmNeoverse技术。其中包括,通过性能效率更优异的N系列新IP扩展ArmNeoverse计算子系统(CSS)产品路线图。与NeoverseCSSN2相比,NeoverseCSSN3的每瓦性能可提高......
  • [转帖]尝试梳理下ARM处理器的发展历史
    大家好,这篇文章是我的朋友MichaelYao写的,我觉得非常不错,分享给大家。1.前言本文尝试简单梳理下ARM处理器的发展历史、架构的演进,包括不同处理器的应用方向,但我们重点还是围绕Cortex-A系列展开,也会介绍不同微架构处理器之间的继承关系,以及它们分别出自哪个设计团队等。不出......
  • 实测52.4MB/s!全国产ARM+FPGA的CSI通信案例分享!
    CSI总线介绍与优势CSI(CMOSsensorparallelinterfaces)总线是一种用于连接图像传感器和处理器的并行通信接口,应用于工业自动化、能源电力、智慧医疗等领域,CSI总线接口示意图如下所示(以全志科技T3处理器的CSI0为例)。  图1高带宽:CSI总线支持高速数据传输,可以满足多通道高速......
  • 基于HarmonyOS的阅读笔记助手的APP开发第一天
    1.设计原型书籍界面原型书籍阅读界面原型笔记界面原型笔记记录界面原型软件设置界面原型......