刘帅嵌入式系统-当前程序状态寄存器(cpsr)

2023-12-09 17:18

本文主要是介绍刘帅嵌入式系统-当前程序状态寄存器(cpsr),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CPSR的格式如下图。SPSR格式与CPSR格式相同。

 

1、条件标志位

N(Negative)、Z(Zero)、C(Carry)及V(oVerflow)统称为条件标志位。大部分的ARM指令可以根据CPSR中的这些条件标志位选择性地执行。各条件标志位的具体含义如下。

N:当两个补码表示的有符号整数运算时,N=1表示运算的结果为负数;N=0表示结果为整数或零。

Z:Z=1表示运算结果为零;Z=0表示运算结果不为零。对于CMP指令,Z=1表示进行比较的两个数大小相等。

C:下面介绍4种情况C的设置方法。

--在加法指令中(包括比较指令CMN),当结果产生了进位,则C=1,表示无符号数运算发生上溢出;其他情况下C=0。

--在剑法指令中(包括比较指令CMP),当运算中发生借位,则C=0,表示无符号数运算发生下溢出;其他情况下C=1。

--对于包含移位操作的非加/减发运算指令,C中包含最后一次被溢出的位的数值。

--对于其他非加/减法运算指令,C位的值通常不变。

V:对于加/减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出。通常其他的指令不影响V位,具体可参考各指令的说明。

2、CPSR中的控制位

CPSR的低8位I、F、T及M[4:0]统称为控制位。当异常发生时,这些位发生变化,在特权级的处理器模式下,软件可以修改这些控制位。

1)中断禁止位

-- I=1时,禁止IRQ中断。

-- F=1时,禁止FIQ中断。

2)T控制位

T控制位用于控制指令执行的状态,级说明本指令时ARM指令,还是Thumb指令。但对于不同版本的ARM处理器,T控制位的含义不同。

对于ARMv3和ATMv4的非T系列版本的处理器,没有ARM状态和Thumb状态切换,固T=0。

对于ARMv4以及更高的版本的T系列处理器,T含义如下:

-T=0表示执行ARM指令。

-T=1表示执行Thumb指令。

对于ARMv5以及更高的、版本的非T系列的ARM处理器,T含义如下:

-T=0表示执行ARM指令。

-T=1表示强制下一条执行的指令产生未定义指令中断。

3)M控制位,可参考上图所示。

3、CPSR中的其他位

CPSR中的其他位用于将来ARM版本的扩展。应用软件不要操作这些位,以免与ARM将来版本的扩展冲突。

这篇关于刘帅嵌入式系统-当前程序状态寄存器(cpsr)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/474496

相关文章

将java程序打包成可执行文件的实现方式

《将java程序打包成可执行文件的实现方式》本文介绍了将Java程序打包成可执行文件的三种方法:手动打包(将编译后的代码及JRE运行环境一起打包),使用第三方打包工具(如Launch4j)和JDK自带... 目录1.问题提出2.如何将Java程序打包成可执行文件2.1将编译后的代码及jre运行环境一起打包2

MySQL 中的服务器配置和状态详解(MySQL Server Configuration and Status)

《MySQL中的服务器配置和状态详解(MySQLServerConfigurationandStatus)》MySQL服务器配置和状态设置包括服务器选项、系统变量和状态变量三个方面,可以通过... 目录mysql 之服务器配置和状态1 MySQL 架构和性能优化1.1 服务器配置和状态1.1.1 服务器选项

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Java实现Elasticsearch查询当前索引全部数据的完整代码

《Java实现Elasticsearch查询当前索引全部数据的完整代码》:本文主要介绍如何在Java中实现查询Elasticsearch索引中指定条件下的全部数据,通过设置滚动查询参数(scrol... 目录需求背景通常情况Java 实现查询 Elasticsearch 全部数据写在最后需求背景通常情况下

C#实现系统信息监控与获取功能

《C#实现系统信息监控与获取功能》在C#开发的众多应用场景中,获取系统信息以及监控用户操作有着广泛的用途,比如在系统性能优化工具中,需要实时读取CPU、GPU资源信息,本文将详细介绍如何使用C#来实现... 目录前言一、C# 监控键盘1. 原理与实现思路2. 代码实现二、读取 CPU、GPU 资源信息1.