【ARM——当前程序状态寄存器 CPSR

news2024/11/25 16:27:10

文章目录

    • CPSR
    • SPSR
    • SPSR
    • CPSR 各个位含义

CPSR

Current Program Status Register 即 CPSR,当前程序状态寄存器,可以在任何处理器模式下被访问。它包含了条件标志位、中断禁止位,当前处理器模式标志以及其他的一些控制和状态位。

SPSR

除了 usr 和 sys 模式外,每一种处理器模式下都有一个专用的物理寄存器,称为 SPSR(备份程序状态寄存器)。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断程序退出时,可以用 SPSR 中保存的值来恢复 CPSR。

由于用户模式和系统模式不是异常中断模式,所以他们没有 SPSR。当在用户模式或系统模式中访问 SPSR,将会产生不可预知的结果

SPSR

Usr 模式下有一个受限的 APSR(application program status register) 寄存器用来简单的代替 CPSR
应用程序必须使用APSR来访问CPSR中可以在非特权模式下更改的部分。可访问的位包括:N Z C V Q 和 GE[3:0]。也就是说在 usr 模式下只能访问这些位。

CPSR 各个位含义

在这里插入图片描述
需要注意的是,

  • User 模式下,不能操作 bit[4:0],即不能切换处理器模式

  • User 模式下,不能操作 A,I 和 F 位
    在这里插入图片描述

  • N
    ALU 计算单元结果是否为负数

    • N = 1 表示运算的结果为负数
    • N = 0 表示运算的结果为正数
  • Z
    ALU 计算单元的结果是否为 0

    • Z = 1 表示运算的结果为 0
    • Z = 0 表示运算的结果不为 0
  • C
    ALU 计算单元的结果是否有进位或借位

    • 运算器进行加法运算
      进位自动置 1
      否则为 0
    • 运算器进行减法运算
      借位自动置 0
      否则为 1
  • V
    ALU 运算单元计算结果是否溢出
    对于加减运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出;通常其他指令不影响V位

  • IT[7:0]

    • IT[7:5]:指示条件执行的条件码。这3个bit用于表示先前指令的条件码,决定是否执行下一条指令。
    • IT[4:0]:指示条件执行的操作数量。这5个bit用于表示条件执行期间的操作数量。
  • J
    用于指示当前处理器是否处于Java执行状态

    • J = 0,表示处理器处于非Java执行状态。

    • J = 1,表示处理器处于Java执行状态。

      Java状态位主要用于ARM架构中支持Java虚拟机(JVM)的处理器。当处理器处于Java执行状态时,它会根据Java虚拟机的需求进行相应的优化和处理。Java状态位的具体使用和影响会根据具体的处理
      需要注意的是,Java状态位在现代ARM架构中已经不再被广泛使用,因为ARM处理器已经有更高效的方式来支持Java虚拟机。因此,在一些较新的ARM处理器中,J位可能没有具体的功能或被保留为未来的扩展使用

  • GE[3:0]
    被一些 SIMD(single instruction multi data 单指令多数据) 指令使用

    • GE[3]:指示饱和标志的第4位。
    • GE[2]:指示饱和标志的第3位。
    • GE[1]:指示饱和标志的第2位。
    • GE[0]:指示饱和标志的第1位。
      饱和标志主要用于指示算术运算的结果是否饱和。在一些特定的 SIMD 指令中,当运算结果超过了指定的范围时,会将结果饱和到最大或最小的可表示值,并将相应的饱和标志设置为1。通过检查饱和标志,可以判断运算结果是否发生。
  • E
    控制 load/store 的字节序

    • E = 1 大端模式
    • E = 0 小端模式
  • A
    禁止异步中止
    User 模式下,不能操作 A

    • A = 1 禁止异步中止
    • A = 0 允许异步中止
      异步中止是一种处理器中断机制,用于处理由于内存访问错误或其他异常情况引起的中止。通过设置或清除bit8,可以控制处理器是否响应异步中止。
  • I
    User 模式下,不能操作 I
    禁止 IRQ 中断

    • I = 0 使能 IRQ 中断
    • I = 1 禁止 IRQ 中断
  • F
    User 模式下,不能操作 F
    禁止 FIQ 中断

    • F = 0 使能 FIQ 中断
    • F = 1 禁止 FIQ 中断
  • T
    指示处理器是否处于 Thumb 状态

    • T = 0 表示 ARM 指令
    • T = 1 表示 Thumb 指令
  • M[4:0]
    User 模式下,不能操作 bit[4:0],即不能切换处理器模式
    更常见的情况是,处理器因异常事件而自动改变模式。
    处理器模式
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/764995.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】list的使用及底层实现原理

本篇文章对list的使用进行了举例讲解。同时也对底层实现进行了讲解。底层的实现关键在于迭代器的实现。希望本篇文章会对你有所帮助。 文章目录 一、list的使用 1、1 list的介绍 1、2 list的使用 1、2、1 list的常规使用 1、2、2 list的sort讲解 二、list的底层实现 2、1 初构…

vue文件上传,文件打不开。文件上传 on-progress不触发

//文件上传带进度条<el-uploadv-model:file-list"fileList":limit"3":on-progress"beforeAvatarUpload"//on-progress 不触发&#xff0c;触发的关键在于覆盖原有的http请求:http-request"getFile":action"${app.api}/student…

【从零开始学习JAVA | 第二十九篇】Stream流

目录 前言&#xff1a; Stram流&#xff1a; 设计目标&#xff1a; 使用步骤&#xff1a; 1.先得到一条Stream流&#xff0c;并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项&#xff1a; 总结: 前言&#xff1a; 本文我们将学习Stream流…

Windows用户注意!LokiBot恶意软件正通过Office文档传播

Windows用户再次成为被称为LokiBot恶意软件的攻击目标&#xff0c;该恶意软件通过Office文档进行传播。 根据Fortinet安全研究员Cara Lin的最新报告&#xff0c;攻击者利用已知漏洞&#xff0c;如CVE-2021-40444和CVE-2022-30190&#xff0c;在微软Office文档中嵌入恶意宏。 …

Eulaceura 版本 23H1:RISC-V 架构新的里程碑

近日&#xff0c;RISC-V SIG 发布了 Eulaceura 版本 23H1&#xff0c;这是发行版的一次重大更新&#xff0c;新版本搭建了 linux kernel 6.1 版本内核&#xff0c;适用于矽速科技 LicheePi 4A 的映像也已公布。Eulaceura 是首个将 RISC-V 架构纳入第一级支持范围的 openEuler 发…

深入理解网络栈

网络路径 发送端 应用层 1、socket 各种网络应用程序基本上都是通过 Linux Socket 编程接口来和内核空间的网络协议栈通信的 socket 是网络编程的入口&#xff0c;它提供了大量的系统调用&#xff0c;构成了网络程序的主体 udp UDP 是面向无连接的协议&#xff0c;不需要与…

CycleGAN论文的阅读与翻译,无监督风格迁移、对抗损失

CycleGAN论文的阅读与翻译&#xff0c;无监督风格迁移 CycleGAN 论文原文 arXiv CycleGAN junyanz&#xff0c;作者自己用 lua 在 GitHub 上的实现 CycleGAN tensorflow PyTorch by LynnHo&#xff0c;一个简单的 TensorFlow 实现 0. 摘要&#xff1a; 图像到图像的翻译 (Ima…

黑马大数据学习笔记2-HDFS基本操作

目录 进程启停管理一键启停脚本单进程启停 文件系统操作命令HDFS文件系统基本信息介绍创建文件夹查看指定目录下内容上传文件到HDFS指定目录查看HDFS文件内容下载HDFS文件拷贝HDFS文件追加数据到HDFS文件HDFS数据移动HDFS数据删除其他命令HDFS WEB浏览 HDFS权限修改权限 https:…

如何设计一个注册中心?(2)实现注册接口

1. 创建SpringBoot工程 创建父工程及三个子模块&#xff0c;其中一个模块作为注册中心&#xff0c;另外两个作为服务提供者。 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns…

OpenCV for Python 入坑第三天 :图片处理(2)

上一篇博客我们了解了图像在OpenCV中的保存方式。并且我们自己上手创建了一张灰度图像和一张彩色图像。除此之外&#xff0c;我们还了解到了彩色图像通道在OpenCV中和我们日常所了解的不一样&#xff0c;是通过BGR的顺序进行编码的。咱们一定要记清楚哦~ 那么今天&#xff0c;我…

tinymce编辑器导入docx、doc格式Word文档完整版

看此文章之前需要注意一点 在前端使用导入Word文档并自动解析成html再插入到tinymce编辑器中&#xff0c;在这里我使用的是mammoth.js识别Word内容&#xff0c;并set到编辑器中&#xff0c;使用mammoth只可解析.docx格式的Word&#xff0c;目前的mammoth不支持.doc格式&#x…

Ghost Buster Pro for mac(快速清理卸载的应用残存文件)

Ghost Buster Pro for mac可从您已卸载的应用程序中查找并删除文件。该应用程序速度快如闪电&#xff0c;可立即释放内存。 许多应用程序都安装在计算机上&#xff0c;但它们通常只会在您的计算机上停留很短的时间。每个应用程序都会创建文件&#xff0c;但删除应用程序不会删…

01 - 如何制定性能调优标准?

1、为什么要做性能调优&#xff1f; 一款线上产品如果没有经过性能测试&#xff0c;那它就好比是一颗定时炸弹&#xff0c;你不知道它什么时候会出现问题&#xff0c;你也不清楚它能承受的极限在哪儿。 有些性能问题是时间累积慢慢产生的&#xff0c;到了一定时间自然就爆炸了…

使用dhtmlx-gantt甘特图插件定制预约表【实战】

示例传送门 定制预约表展示 一、安装 npm i dhtmlx-gantt二、配置解释与汇总 //自定义表头列 gantt.config.columns = [{name: "

服务器部署 Python 项目总结

title: 服务器部署 Python 项目总结 date: 2023-07-05 16:33:49 tags: 服务器Python categories:服务器 cover: https://cover.png feature: false 1. 准备 Python 项目需要 Python 的环境&#xff0c;假如服务器操作系统为 CentOS 7 的话&#xff0c;默认安装了 Python2 与 …

安达发|APS高级排程系统界的天花板!

APS 系统不仅为生产部门提供制造依据&#xff0c;而且涉及到采购计划、安全库存、订单交付等方面。这是非常复杂的管理。一个易于使用的 APS 系统不仅能够充分整合生产相关业务流程&#xff0c;保证生产计划的顺利进行&#xff0c;而且能够大大提高生产效率&#xff0c;降低管理…

导出python环境的所有安装包

导出操作 pip freeze > requests.txt批量导入操作 pip install -r requests.txt

redis数据类型基本操作(list,string,hash,keys相关操作),mongodb(增删改查)

1、 string类型数据的命令操作&#xff1a; &#xff08;1&#xff09; 设置键值&#xff1a; &#xff08;2&#xff09; 读取键值&#xff1a; &#xff08;3&#xff09; 数值类型自增1&#xff1a; &#xff08;4&#xff09; 数值类型自减1&#xff1a; &#xff08;5…

Java面试突击

Java面向对象有哪些特征&#xff0c;如何应用 ​ 面向对象编程是利用类和对象编程的一种思想。万物可归类&#xff0c;类是对于世界事物的高度抽象 &#xff0c;不同的事物之间有不同的关系 &#xff0c;一个类自身与外界的封装关系&#xff0c;一个父类和子类的继承关系&…

三菱PLC 控制灯一秒钟交替闪烁

三菱PLC中常用的特殊继电器&#xff1a; M8000 上电一直ON标志 M8002 上电导通一次 M8004 PLC出错 M8005 PLC备用电池电量低标志 M8011 10ms时钟脉冲 M8012 100ms时钟脉冲 M8013 1s时钟脉冲 M8014 1min时钟脉冲 M8034…