当前位置: 首页 > news >正文

ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器

目录

一?ARM 架构中的寄存器

ARM 架构中的寄存器

通用寄存器

状态寄存器

控制寄存器

特殊用途寄存器

总结

二 通用寄存器

ARM 架构中的通用寄存器

ARMv7 架构

ARMv8 架构

实例

ARMv7 架构

ARMv8 架构

三 状态寄存器

ARM 架构中的状态寄存器

状态寄存器

详细说明

实例

ARMv7 架构

ARMv8 枩构

四 特殊用途寄存器

ARM 架构下的特殊用途寄存器

堆栈指针 (SP)

链接寄存器 (LR)

程序计数器 (PC)

系统寄存器 (SYSREG)


一ARM 架构中的寄存器

ARM 架构中的寄存器

在 ARM 架构中,寄存器是 CPU 内部用于存储数据、地址和状态信息的关键组件。ARM 架构定义了一系列的寄存器,包括通用寄存器、状态寄存器、程序计数器等。下面是对 ARM 架构中主要寄存器的介绍:

通用寄存器

通用寄存器是一组用于存储数据和地址的寄存器。在 ARM 架构的不同版本中,这些寄存器的数量和命名有所不同。

  • R0-R15 (R0-R14 + PC):

    • 在 ARMv7 和之前的版本中,有 16 个通用寄存器,编号从 R0 到 R15。
    • R0 到 R14 用于存储数据和地址。
    • R15 通常被称为程序计数器(PC),用于存储下一条指令的地址。
  • X0-X30 (X0-X29 + SP):

    • 在 ARMv8 和之后的版本中,有 31 个通用寄存器,编号从 X0 到 X30。
    • X0 到 X29 用于存储数据和地址。
    • X30 通常被称为链接寄存器(LR),用于保存返回地址。
    • X31 通常被称为堆栈指针(SP),用于管理堆栈。

状态寄存器

状态寄存器用于存储 CPU 的状态信息,例如标志位、中断使能状态等。

  • Program Status Register (PSR):
    • PSR 是 ARM 架构中的一个重要的状态寄存器,包含了多个子寄存器,用于存储 CPU 的状态信息。
    • PSR 包括:
      • Application Program Status Register (APSR): 用于存储条件码标志位(如 N、Z、C、V 等)。
      • Implementation-defined Program Status Register (IPSR): 用于指示当前正在处理的中断。
      • Program Status Register (EPSR): 用于存储控制位,如中断使能位。

控制寄存器

控制寄存器用于控制 CPU 的行为,如中断控制、调试控制等。

  • Control Register (CTRL):
    • 用于控制某些 CPU 特性,如是否启用调试模式等。
  • Auxiliary Control Register (ACTLR):
    • 用于控制辅助特性,如性能监控单元(PMU)等。

特殊用途寄存器

除了通用寄存器和状态寄存器之外,ARM 架构还包括一些特殊用途的寄存器。

  • Stack Pointer (SP):
    • 用于管理堆栈,通常映射到通用寄存器 X31/R13。
  • Link Register (LR):
    • 用于保存返回地址,通常映射到通用寄存器 X30/R14。
  • Program Counter (PC):
    • 用于存储下一条指令的地址,通常映射到通用寄存器 X15/R15。
  • System Register (SYSREG):
    • 用于控制和监视 CPU 的各种特性和状态,如中断控制、缓存控制等。

总结

  • 通用寄存器:

    • 用于存储数据、地址等。
    • 在 ARMv7 和之前版本中,编号为 R0 到 R15。
    • 在 ARMv8 和之后版本中,编号为 X0 到 X30。
    • R15/X15 通常称为程序计数器(PC)。
    • X30 通常称为链接寄存器(LR)。
    • X31/R13 通常称为堆栈指针(SP)。
  • 状态寄存器:

    • 用于存储 CPU 的状态信息,如条件码标志位等。
    • 包括 APSR、IPSR 和 EPSR。
  • 控制寄存器:

    • 用于控制 CPU 的行为,如 CTRL 和 ACTLR。
  • 特殊用途寄存器:

    • 包括 SP、LR、PC 和 SYSREG。

这些寄存器构成了 ARM 架构的核心组成部分,对于理解和编写 ARM 架构的汇编语言程序非常重要。

二 通用寄存器

ARM 架构中的通用寄存器

在 ARM 架构中,通用寄存器是一组用于存储数据、地址和其他信息的寄存器。ARM 架构的不同版本中,通用寄存器的数量和命名有所不同。以下是 ARMv7 和 ARMv8 架构中通用寄存器的详细介绍及实例。

ARMv7 架构

在 ARMv7 架构中,有 16 个通用寄存器,编号从 R0 到 R15。这些寄存器主要用于存储数据、地址以及程序计数器等。

  • R0-R14:

    • 这些寄存器可以用于存储数据、地址等。
    • 它们在函数调用和数据处理中非常有用。
    • R0 到 R3 通常用于函数调用中的参数传递。
    • R4 到 R11 通常用于局部变量或函数内部使用的寄存器。
    • R12 通常用作临时寄存器或用于保存跨函数调用的数据。
    • R13 通常称为堆栈指针(SP),用于管理堆栈。
    • R14 通常称为链接寄存器(LR),用于保存返回地址。
  • R15 (PC):

    • R15 通常称为程序计数器(PC),用于存储下一条指令的地址。
ARMv8 架构

在 ARMv8 架构中,通用寄存器的数量增加到了 31 个,编号从 X0 到 X30。此外,还引入了 32 位和 64 位寄存器的区分,分别称为 X 寄存器和 W 寄存器。

  • X0-X29:

    • 这些寄存器可以用于存储数据、地址等。
    • 它们在函数调用和数据处理中非常有用。
    • X0 到 X3 通常用于函数调用中的参数传递。
    • X4 到 X29 通常用于局部变量或函数内部使用的寄存器。
    • X30 通常称为链接寄存器(LR),用于保存返回地址。
    • X31 通常称为堆栈指针(SP),用于管理堆栈。
  • W0-W29:

    • 这些寄存器是 X0 到 X29 的低 32 位版本,用于兼容 32 位应用。

实例

ARMv7 架构

asm

深色版本

1// ARMv7 架构示例
2// 假设 a1 寄存器中存储了一个地址,该地址指向一个整数
3// 我们将从该地址读取整数,并将其存储到 a0 寄存器中
4
5LDR R0, [R1]    @ 从 a1 指向的地址读取整数到 a0
ARMv8 架构

asm

深色版本

1// ARMv8 架构示例
2// 假设 x1 寄存器中存储了一个地址,该地址指向一个整数
3// 我们将从该地址读取整数,并将其存储到 x0 寄存器中
4
5LDR X0, [X1]    @ 从 x1 指向的地址读取整数到 x0

三 状态寄存器

ARM 架构中的状态寄存器

在 ARM 架构中,状态寄存器用于存储 CPU 的状态信息,如条件码标志位、中断使能状态等。这些寄存器对于控制 CPU 的行为非常重要。以下是 ARM 架构中主要的状态寄存器及其详细介绍:

状态寄存器
  • Program Status Register (PSR):
    • PSR 是 ARM 架构中的一个重要的状态寄存器,包含了多个子寄存器,用于存储 CPU 的状态信息。
    • PSR 包括:
      • Application Program Status Register (APSR): 用于存储条件码标志位(如 N、Z、C、V 等)。
      • Implementation-defined Program Status Register (IPSR): 用于指示当前正在处理的中断。
      • Program Status Register (EPSR): 用于存储控制位,如中断使能位。
详细说明
  • Application Program Status Register (APSR):

    • APSR 用于存储条件码标志位,这些标志位用于条件分支指令和算术运算指令。
    • APSR 中的主要标志位包括:
      • N (Negative): 如果最近的算术运算结果的最高位为 1,则置位。
      • Z (Zero): 如果最近的算术运算结果为 0,则置位。
      • C (Carry): 如果最近的算术运算产生了进位,则置位。
      • V (Overflow): 如果最近的算术运算产生了溢出,则置位。
  • Implementation-defined Program Status Register (IPSR):

    • IPSR 用于指示当前正在处理的中断。
    • 当 CPU 正在处理中断时,IPSR 中包含了中断的编号。
    • 当没有正在处理的中断时,IPSR 的值为 0。
  • Program Status Register (EPSR):

    • EPSR 用于存储控制位,如中断使能位。
    • EPSR 中的主要位包括:
      • I (Interrupt Disable): 如果置位,则禁用所有中断。
      • F (Fast Interrupt Disable): 如果置位,则禁用快速中断。
实例
ARMv7 架构

asm

深色版本

1// ARMv7 架构示例
2// 假设需要判断一个算术运算的结果是否为零
3
4// 执行一个算术运算,比如将 R0 和 R1 相加
5ADD R0, R0, R1
6
7// 判断 R0 是否为零
8// 如果 Z 标志位被置位,则 R0 为零
9// 如果 Z 标志位未被置位,则 R0 不为零
10CMP R0, #0
11BEQ .zero  ; 如果 Z 标志位被置位,则跳转到 .zero 标签
12
13// R0 不为零
14B .not_zero
15
16.zero:
17// R0 为零的情况
18...
19
20.not_zero:
21// R0 不为零的情况
22...
ARMv8 枩构

asm

深色版本

1// ARMv8 构架示例
2// 假设需要判断一个算术运算的结果是否为零
3
4// 执行一个算术运算,比如将 X0 和 X1 相加
5ADD X0, X0, X1
6
7// 判断 X0 是否为零
8// 如果 Z 标志位被置位,则 X0 为零
9// 如果 Z 标志位未被置位,则 X0 不为零
10CMP X0, #0
11BEQ .zero  ; 如果 Z 标志位被置位,则跳转到 .zero 标签
12
13// X0 不为零
14B .not_zero
15
16.zero:
17// X0 为零的情况
18...
19
20.not_zero:
21// X0 不为零的情况
22...

四 特殊用途寄存器

ARM 架构下的特殊用途寄存器

在 ARM 架构中,有一些特殊用途的寄存器,如堆栈指针(SP)、链接寄存器(LR)、程序计数器(PC)以及系统寄存器(SYSREG)。这些寄存器对于控制和管理 CPU 的行为至关重要。下面是这些寄存器的详细介绍及使用实例:

堆栈指针 (SP)

  • 用途:

    • SP 用于指示当前堆栈的顶部位置。
    • 在函数调用期间,参数、局部变量以及返回地址都会被压入堆栈。
    • SP 的值会随着堆栈操作的变化而更新。
  • 实例:

asm

深色版本

1// ARMv7 架构示例
2// 假设需要保存当前堆栈指针的值
3// 然后修改 SP,最后恢复 SP 的值
4
5// 保存当前堆栈指针的值到 R1
6MOV R1, SP
7
8// 修改 SP,例如向下移动 4 个字节
9SUB SP, SP, #4
10
11// 执行一些操作
12...
13
14// 恢复 SP 的原始值
15MOV SP, R1

链接寄存器 (LR)

  • 用途:

    • LR 通常用于保存函数调用的返回地址。
    • 在函数调用期间,返回地址会被自动保存到 LR。
    • 当函数返回时,通常通过 LR 来恢复程序执行的流程。
  • 实例:

asm

深色版本

1// ARMv7 架构示例
2// 假设需要调用一个函数并返回
3
4// 保存 LR 到 R1
5STR LR, [R1]
6
7// 调用函数
8BL my_function
9
10// 返回后,从 R1 恢复 LR 的值
11LDR LR, [R1]

程序计数器 (PC)

  • 用途:

    • PC 用于存储下一条指令的地址。
    • 在正常执行过程中,每条指令执行完毕后,PC 会自动更新到下一条指令的地址。
    • 条件分支指令和函数调用也会修改 PC 的值。
  • 实例:

asm

深色版本

1// ARMv7 架构示例
2// 假设需要跳转到一个特定的地址
3
4// 将目标地址加载到 R1
5LDR R1, =target_address
6
7// 将 R1 的值复制到 PC
8MOV PC, R1
系统寄存器 (SYSREG)
  • 用途:

    • SYSREG 用于控制和监视 CPU 的各种特性。
    • 这些寄存器可以用于控制中断、缓存、调试等功能。
    • 例如,控制中断使能的寄存器是 CTR_ELx,控制缓存的寄存器是 DC_CSW_ELx。
  • 实例:

asm

深色版本

1// ARMv8 构架示例
2// 假设需要禁用中断
3
4// 禁用中断
5MSR DAIFClr, #0x10  ; 设置 I 位为 1,禁用中断
6
7// 执行一些不受中断影响的操作
8...
9
10// 恢复中断
11MSR DAIFClr, #0x00  ; 清除 I 位,恢复中断

相关文章:

ARM 架构--通用寄存器状态寄存器控制寄存器特殊用途寄存器

目录 一?ARM 架构中的寄存器 ARM 架构中的寄存器 通用寄存器 状态寄存器 控制寄存器 特殊用途寄存器 总结 二 通用寄存器 ARM 架构中的通用寄存器 ARMv7 架构 ARMv8 架构 实例 ARMv7 架构 ARMv8 架构 三 状态寄存器 ARM 架构中的状态寄存器 状态寄存器 详细…...

最新SQL Server 2022保姆级安装教程【附安装包】

目录 一、安装包下载: 下载链接:https://pan.quark.cn/s/b1c0c63d61ec 二、安装SQL Server 1.下载安装包后解压出来,双击打开 2.等待加载安装程序 3.点击基本安装 4.点击接受 5.点击浏览 6.在D盘新建文件夹 7.命名为【Sql Server】…...

学习C++:运算符

运算符 作用:用于执行代码的运算 一,算数运算符 作用:用于处理四则运算 (在除法运算中,除数不可以为0) 两个小数不可以做取模运算 (只有整型变量可以进行取模运算) 二&#xff0…...

pdf有密码,如何实现pdf转换word?

PDF想要转换成其他格式,但是当我们将文件拖到PDF转换器进行转换的时候发现PDF文件带有密码怎么办?今天分享PDF有密码如何转换成word方法。 方法一、 PDF文件有两种密码,打开密码和限制编辑,如果是因为打开密码,建议使…...

AI发展新态势:从技术突破到安全隐忧

AI安全的新挑战 近期AI领域出现了令人担忧的新发现。根据最新研究,AI模型已经开始展现出策略性欺骗的倾向。具体表现在以下几个方面: 策略性欺骗行为的出现 在实验中发现,当研究人员试图让AI执行一些"反Anthropic"的操作时(如获取模型权限和外部服务器访问),模…...

王佩丰24节Excel学习笔记——第二十二讲:制作甘特图与动态甘特图

【以 Excel2010 系列学习,用 Office LTSC 专业增强版 2021 实践】 【本章技巧】 插入图表,针对每一个图表上的元素,都可以选中选右键进行修改数据;本章中的向两端延伸,设置数据的原理;数据格式的显示方式&…...

若依框架之简历pdf文档预览功能

一、前端 (1)安装插件vue-pdf:npm install vue-pdf (2)引入方式:import pdf from "vue-pdf"; (3)components注入方式:components:{pdf} (4&…...

酷瓜云课堂(内网版)v1.1.8 发布,局域网在线学习平台方案

更新layui-v2.9.20文章复用课程期限优化编辑器内容自动提交联系方式增加抖音二维码修正课时详情页目录高亮问题修正CommentInfo中点赞判断精简AccountSearchTrait优化kg_h5_index_url()优化CourseUserTrait优化kg_setting()优化CsrfToken 系统介绍 酷瓜云课堂内网版&#xff…...

python语音机器人(青云客免费api)

强调:不用登录注册,直接使用就好 青云客智能聊天机器人API python代码,直接可以运行: 1、安装库: pip install requests pyttsx3 SpeechRecognition sounddevice numpy scipy2、完整代码: import request…...

使用ArcGIS/ArcGIS pro绘制六边形/三角形/菱形渔网图

在做一些尺度分析时,经常会涉及到对研究区构建不同尺度的渔网进行分析,渔网的形状通常为规则四边形。构建渔网的方法也很简单,使用ArcGIS/ArcGIS Pro工具箱中的【创建渔网/CreateFishnet】工具来构建。但如果想构建其他形状渔网进行相关分析&…...

5.系统学习-PyTorch与多层感知机

PyTorch与多层感知机 前言PyTroch 简介张量(Tensor)张量创建张量的类型数据类型和 dtype 对应表张量的维度变换:张量的常用操作矩阵或张量计算 Dataset and DataLoaderPyTorch下逻辑回归与反向传播数据表格 DNN(全连结网络&#x…...

AIGC与虚拟身份及元宇宙的未来:虚拟人物创作与智能交互

个人主页:云边有个稻草人-CSDN博客 目录 引言 一、AIGC在元宇宙中的作用 1.1 AIGC与虚拟人物创作 1.1.1 生成虚拟人物外观 1.1.2 个性化虚拟角色设计 1.2 AIGC与虚拟角色的行为与交互 1.2.1 行为生成与强化学习 1.2.2 对话生成与自然语言处理 二、AIGC实现…...

基于大模型LLM 应用方案

现如今LLM 应用 面临的主要问题 准确性,2. 高成本,3. 专业性,4. 时效性,5. 安全性 信息偏差/幻觉 (大模型由于数据缺陷/知识边界 会使用 可靠性下降)知识更新滞后性 (LLM 基于静态数据集训练,可能导致知识更…...

实用技巧:关于 AD修改原理图库如何同步更新到有原理图 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/144738332 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...

区块链平台安全属性解释

区块链平台安全属性解释 双向认证 解释:双向认证是指在通信过程中,**通信双方都需要对对方的身份进行验证,确保对方是合法的、可信任的实体。**只有双方身份都得到确认后,通信才会被允许进行,从而防止非法用户的接入和数据的窃取或篡改。举例:在基于区块链和联邦学习的数…...

1228作业

思维导图 作业 TCP的cs模型 服务器 //服务器 #include <myhead.h> #define PORT 6667 #define IP "192.168.124.94" #define BACKLOG 128 int main(int argc, const char *argv[]) {//创建套接字int oldfd socket(AF_INET,SOCK_STREAM,0);if(oldfd-1){perro…...

Machine-learning the skill of mutual fund managers

Machine-learning the skill of mutual fund managers – 论文阅读 文章目录 Machine-learning the skill of mutual fund managers -- 论文阅读AbstractIntroductionQuestionMain findingscontributionsliterature reviewDataSampleHoldings-based characteristicsModelOptima…...

Windows下Python+PyCharm的安装步骤及PyCharm的使用

Windows下PythonPyCharm的安装步骤及PyCharm的使用 文章目录 Windows下PythonPyCharm的安装步骤及PyCharm的使用一、Python的安装&#xff08;1&#xff09;环境准备&#xff08;2&#xff09;Python安装&#xff08;3&#xff09;pip组件的安装 二、PyCharm的安装&#xff08;…...

Anaconda+PyTorch(CPU版)安装

1.Anaconda下载 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 如果已安装python&#xff0c;下载之前要彻底删除之前下载的python 2.Anaconda安装 3.添加环境变量 //根据实际安装路径进行更改 D:\Anaconda D:\Anaconda\Scripts D:\…...

第 28 章 - ES 源码篇 - Elasticsearch 启动与插件加载机制解析

前言 不管是什么框架&#xff0c;启动类里面做的一定是初始化的工作&#xff01; 启动 ES 节点的启动逻辑&#xff0c;全部都在 org.elasticsearch.bootstrap 包下。 启动类为&#xff1a;Elasticsearch#main(final String[] args) 与大多数框架启动类一致。启动类主要负责的…...

高效突破语言壁垒:KISS Translator的全场景翻译解决方案

高效突破语言壁垒&#xff1a;KISS Translator的全场景翻译解决方案 【免费下载链接】kiss-translator A simple, open source bilingual translation extension & Greasemonkey script (一个简约、开源的 双语对照翻译扩展 & 油猴脚本) 项目地址: https://gitcode.c…...

HPKM-PINN:KAN-MLP并行混合物理信息神经网络技术 第1章 KAN基础与MLP局限的理论分析(二)

脚本 2.1.2.2:激活函数选择——Tanh 与 SwiGLU 在物理约束中的适应性 涉及内容:对比分析 Tanh 与 SwiGLU 激活函数在物理信息神经网络中的适应性,验证不同物理约束(如边界条件、守恒律)下的数值稳定性。 使用方式:运行脚本生成激活函数特性对比、物理约束满足度分析及梯…...

戴森球计划FactoryBluePrints蓝图库:从新手到专家的终极工厂建设指南

戴森球计划FactoryBluePrints蓝图库&#xff1a;从新手到专家的终极工厂建设指南 【免费下载链接】FactoryBluePrints 游戏戴森球计划的**工厂**蓝图仓库 项目地址: https://gitcode.com/GitHub_Trending/fa/FactoryBluePrints FactoryBluePrints蓝图库是戴森球计划游戏…...

解放你的创造力:用TEdit打造泰拉瑞亚专属世界地图

解放你的创造力&#xff1a;用TEdit打造泰拉瑞亚专属世界地图 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also lets you change…...

利用快马平台与vscode codex快速构建react待办事项应用原型

最近在尝试用AI工具快速验证产品原型&#xff0c;发现InsCode(快马)平台配合VSCode Codex能实现惊人的开发效率。以React待办事项应用为例&#xff0c;从零到可交互原型只用了不到10分钟&#xff0c;分享下具体实现思路和操作过程。 需求拆解与AI描述 首先将待办事项应用的7个核…...

Cadence Allegro 17.4进阶技巧:PCB Editor中高效调整丝印的三大步骤

1. 丝印调整的核心价值与准备工作 在PCB设计流程中&#xff0c;丝印调整往往被新手工程师视为"收尾环节"&#xff0c;但实际它直接影响着后续生产的可制造性和产品维护的便利性。Cadence Allegro 17.4的PCB Editor模块提供了完整的丝印处理工具链&#xff0c;我经手…...

GLM-5.1 全面支持与 Gemini CLI 集成:HagiCode 的多模型进化之路

GLM-5.1 全面支持与 Gemini CLI 集成&#xff1a;HagiCode 的多模型进化之路 本文介绍了 HagiCode 平台近期的重要更新——智谱 AI GLM-5.1 模型的全面支持&#xff0c;以及 Gemini CLI 作为第十个 Agent CLI 的成功集成。这两项更新进一步强化了平台的多模型能力和多 CLI 生态…...

千问3.5-2B博物馆导览:展品图理解、说明牌OCR与个性化讲解生成

千问3.5-2B博物馆导览&#xff1a;展品图理解、说明牌OCR与个性化讲解生成 1. 博物馆导览新体验 想象一下&#xff0c;当你站在博物馆的展品前&#xff0c;只需用手机拍下展品照片&#xff0c;就能立即获得专业的讲解内容、展品背景故事&#xff0c;甚至还能根据你的兴趣偏好…...

Ostrakon-VL-8B打通企业数据流:与内部CRM系统集成实现智能客户分析

Ostrakon-VL-8B打通企业数据流&#xff1a;与内部CRM系统集成实现智能客户分析 你有没有遇到过这样的情况&#xff1f;销售团队抱怨客户画像太模糊&#xff0c;营销活动像在“盲人摸象”&#xff0c;投入了大量资源&#xff0c;转化率却总是不尽如人意。传统的客户关系管理&am…...

光伏产业发展带动紧固件需求增长 市场趋势与应用分析 上海紧固件专业展

2026第十六届上海紧固件专业展&#xff08;Fastener Expo Shanghai 2026&#xff09;将于6月24日至26日在上海国家会展中心举行。随着新能源产业持续升温&#xff0c;光伏行业的快速发展正在显著带动紧固件市场需求增长&#xff0c;成为行业关注的重要方向。在全球能源转型的大…...