3、ARM寄存器组织

2023-09-19 00:31:35

ARM寄存器组织

1、寄存器

概念

  • 寄存器是处理器内部的存储器,没有地址

作用

  • 一般用于暂时存放参与运算的数据和运算的结果

分类

  • 包括通用寄存器、专用寄存器、控制寄存器
    在这里插入图片描述

2、ARM寄存器

在这里插入图片描述
注:

  • 在某个特定的模式下,只能使用当前模式下的寄存器。一个模式下的特有寄存器在其他模式下不可以使用

专用寄存器

R15(PC,Program Counter)

  • 程序计数器,用于存储当前取址指令的地址

R14(LR,Link Register)

  • 链接寄存器,一般有一下两种用途
    • 1、执行跳转指令(BL和BLX)时,LR会自动保存跳转指令下一条指令的地址。程序需要返回时,将LR的值复制到PC即可实现。
    • 2、产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下一条指令的地址,异常处理结束后将LR的值复制到PC即可实现。

R13(SP,Stack Pointer)

  • 栈指针,用于存储当前模式下的栈顶指针

CPSR寄存器

CPSR(Current Program Status Register)

  • 当前程序状态寄存器
    在这里插入图片描述

CPSR寄存器分为四个域

  • 1、[31:28]为条件域,用F表示
  • 2、[24:27]为状态域,用S表示
  • 3、[15:8]为预留域 ,用X表示
  • 4、[8:0]为控制域 ,用C表示

Bit[4:0]

  • [10000]:User
  • [10001]:FIQ
  • [10010]:IRQ
  • [10011]:Supervisor (SVC)
  • [10111]:Abort(ABT)
  • [11011]:Undef(UND)
  • [11111]:System(SYS
  • [10110]:Monitor

Bit[5]

  • [0]:ARM状态
  • [1]:Thumb状态

Bit[6]

  • [0]:开启FIQ
  • [1]:禁止FIQ

Bit[7]

  • [0]:开启IRQ
  • [1]:禁止IRQ

Bit[28]:V

  • 1、当运算器中进行加法运算且产生符号位进位时,该位自动置1,否则为0
  • 2、当运算器中进行减法运算且产生符号位借位时,该位自动置0,否则为1

Bit[29]:C

  • 当运算器中进行加法运算且产生进位时,该位自动置1,否则为0
  • 当运算器中进行减法运算且产生借位时,该位自动置0,否则为1

Bit[30]:Z

  • 当运算器中产生了0的结果该位自动置1,否则为0

Bit[31]:N

  • 当运算器中产生了负数的结果,该位自动置1,否则为0
更多推荐

【Spring Boot】数据缓存Redis实现高并发 —— Redis入门

🌿欢迎来到@衍生星球的CSDN博文🌿🍁本文主要学习Redis的入门🍁🌱我是衍生星球,一个从事集成开发的打工人🌱⭐️喜欢的朋友可以关注一下🫰🫰🫰,下次更新不迷路⭐️💠作为一名热衷于分享知识的程序员,我乐于在CSDN上与广大开发者交流学习。💠我希望通过每一次学习,让更多读者了解我,也希望能结识更多志同

利用 Python PyPDF2库轻松提取PDF文本(及其他高级操作)

当需要从PDF文件中提取文本时,Python中的PyPDF2库是一个非常有用的工具。无论您是需要分析PDF文档中的内容还是需要在文档中搜索特定的信息,PyPDF2都可以帮助您轻松实现这些任务。在本文中,我们将探讨如何使用PyPDF2库提取PDF文件中的文本,并提供一些示例代码来帮助您入门。安装PyPDF2库首先,您需要

全局异常处理+JSR303验证

一、前言我们在日常开发中,避不开的就是参数校验,有人说前端不是会在表单中进行校验的吗?在后端中,我们可以直接不管前端怎么样判断过滤,我们后端都需要进行再次判断,为了安全。因为前端很容易拜托,当测试使用PostMan来测试,如果后端没有校验,不就乱了吗?肯定会有很多异常的。今天小编和大家一起学习一下JSR303专门用于参

如何使用Jest生成中文测试报告

前言Jest是一个非常流行的JavaScript测试框架,它提供了丰富的功能和易于理解的测试报告。然而,默认情况下,Jest生成的测试报告是以英文展示的。如果需要生成中文测试报告,我们需要对Jest进行一些配置。以下是一种方法,可以在Jest中生成中文测试报告:安装相关依赖首先,确保已经安装了Node.js和npm。然

C语言 coding style

头文件The#defineGuard#define的保护文件的唯一性,防止被多重包含格式:<PROJECT>_<FILE>_H_PROJECT:XSFILE:MV_CTR头文件的包含顺序CSystemFilesOtherLibrariesUserLibraryConditionalinclude作用域局部变量-变量定义

VMware vCenter 从6.7跨版本升级至7.0U3N

本文尝试使用vCenterServerAppliance管理界面(VAMI)进行对vCenterServerAppliance7应用进行小版本升级,从6.7.0.47000升级到7.0.3.01600(7.0U3N)。一、升级前的准备工作1、检查当前运行环境(当前为6.7.0.47000)2、核实当前ESXi版本均在兼

提高接口自动化测试效率:使用 JMESPath 实现断言和数据提取!

前言做接口自动化,断言是比不可少的。如何快速巧妙的提取断言数据就成了关键,当然也可以提高用例的编写效率。笔者在工作中接触到了JMESPath,那到底该如何使用呢?带着疑惑一起往下看。JMESPath是啥?JMESPath是一种用于查询和转换JSON数据的简洁、强大的查询语言。它提供了一种灵活的方式来从复杂的JSON结构

思腾云计算

近年来,游戏行业发展迅猛,市场容量不断扩大。从游戏产业发展来看,玩家对于游戏内容和体验的需求不断攀升。那如何在同质化的游戏市场,通过AI来提高游戏探索和交互的趣味度?行业存在以下痛点:1、游戏迭代速度加快,如何加速研发创新,提供多元化的游戏体验;2、在线多人竞技类游戏因玩家能力不均,均衡对局匹配耗时长,对局质量差,再加

Spring注解家族介绍: @RequestMapping

前言:今天我们来介绍@RequestMapping这个注解,这个注解的内容相对来讲比较少,篇幅会比较短。目录前言:@RequestMapping应用场景:总结:@RequestMapping@RequestMapping是一个用于映射HTTP请求到处理方法的注解,它可以用在控制器类和处理方法上。当请求到达服务器时,根据

lv4 嵌入式开发-9 静态库与动态库的使用

目录1库的概念2库的知识3静态库特点4静态库4.1静态库创建4.2编译生成目标文件4.3创建静态库hello4.4查看库中符号信息4.5链接静态库5共享库特点6共享库6.1共享库创建6.2编译生成目标文件6.3创建共享库common6.4为共享库文件创建链接文件6.5编写应用程序6.6编译test.c并链接共享库lib

Java基于SpringBoot的漫画网站,附源码,教程

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌今天为大家带来的是基于SpringBoot+Vue的漫画之家系统,亲测可用,可以作为课程设计,毕业设计适用。文章目录1、前言介绍2.技术栈3系统分析3.

热文推荐