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

ARM内部寄存器

文章目录

  • 一、介绍
  • 二、CPU 的寄存器
    • 2.1.R0 ~ R15
    • 2.2.程序状态寄存器(M3 / M4)
    • 2.3.程序状态寄存器(A7)

一、介绍

CPU内部的寄存器是超高速、容量极小的临时存储单元,专用于存放当前正在执行的指令和运算数据。CPU 访问内部的寄存器时,不需要寻址,直接进行访问。CPU 计算的时候,在某个内存将变量读进来,做运算,再写回去,读进来和做运算的操作,实际上是将变量的值,读到CPU 内部的寄存器里面进行保存和运算。

二、CPU 的寄存器

2.1.R0 ~ R15

如下图所示,ALU 是逻辑运算单元,R0 ~ R15 是 CPU 内部的寄存器,R0 ~ R12 这 13 个寄存器是通用的寄存器,另外 3 个寄存器有别的用途:

  • R13:SP(Stack Pointer),栈指针,永远指着栈这个储物区最顶上的那个位置,该指针有两个实体:SP_process 和 SP_main,一般使用 SP_main,运行 RTOS 时使用 SP_process
  • R14:LR(Link Register),用来保存返回地址的寄存器
  • R15:PC(Program Counter),程序计数器,表示当前指令地址,写入新址即可跳转

下面展开说明一下 R15:R15(PC)里面存放着 CPU 接下来要执行的那条指令在内存中的地址

  • 取指令:CPU根据 R15 里记录的地址,从内存中取出对应的指令
  • 执行指令:CPU执行这条指令
  • 自动更新:执行完后,R15里的地址会自动增加,指向下一条指令的地址。这样,程序就能一条接一条地顺序执行下去
  • 跳转:当遇到条件判断、循环或者函数调用时,执行跳转指令会直接改变 R15 里的地址,让 CPU 跳到新的地方去执行,从而实现复杂的程序逻辑

在这里插入图片描述

2.2.程序状态寄存器(M3 / M4)

CPU 内部除了 16 个寄存器之外,还有一个程序状态寄存器(PSR),简单来说,PSR(程序状态寄存器)是 CPU 的“状态仪表盘”,它用一个寄存器记录了 CPU 刚刚执行完操作后的各种关键状态。例如,有两个数进行比较,比较的结果就存放在 PSR 里面。

在这里插入图片描述

xPSR 的 x 是一个可修改的值,实际上对应 3 个寄存器:

  • APSR:Application PSR,应用 PSR
  • IPSR:Interrupt PSR,中断 PSR
  • EPSR:Exectution PSR,执行 PSR

下面表格是 xPSR ,32 个位里,三个寄存器相应的功能位相互错开。对于访问这三个寄存器,可以单独访问:

  • MRS R0, APSR ;读 APSR
  • MRS R0, IPSR ;读 IPSR
  • MSR APSR, R0 ;写 APSR

也可以一次性访问:

  • MRS R0, PSR ;读组合程序状态
  • MSR PSR, R0 ;写组合程序状态
    在这里插入图片描述
    在这里插入图片描述

2.3.程序状态寄存器(A7)

A7 内核的程序状态寄存器成为当前程序状态寄存器,它里面的内容和 M3 / M4 内核的大差不差

在这里插入图片描述

下图是 A7 的程序状态寄存器:

在这里插入图片描述

为了提高效率,A7 内核的 CPU 有多种工作模式,有用户模式、系统模式、快中断模式、中断模式等等,例如,在快中断模式下,它有自己专用的寄存器 R8 ~ R14, 这样不会影响到其他寄存器的工作,同时又可以处理中断,这样就可以提高中断的效率。

在这里插入图片描述

http://www.dtcms.com/a/409917.html

相关文章:

  • Laravel + UniApp AES加密/解密
  • 5G开户时切片配置参数详解
  • 面向新质生产力,职业院校“人工智能”课程教学解决方案
  • wap网站如何做福建外贸网站
  • ElasticSearch-提高篇
  • 第6篇、Flask 表单处理与用户认证完全指南:从零到实战
  • Visual Studio 2013 Update 4 中文版安装步骤(带TFS支持)附安装包​
  • 珠海 网站建设注册安全工程师题库
  • 上手 cpp-httplib:轻量级 C++ HTTP 库的安装与实战指南
  • 突破文档型数据库迁移困境:金仓多模方案破解电子证照系统国产化难题
  • 网站手机客户端开发wordpress制造商单页
  • Net 》》C# 》》try finally 执行顺序
  • 在 Unity 项目中使用 FFMpeg 进行音频转码(WAV 转 MP3)
  • 使用Java将Word文件转换为PNG图片
  • 如何用Fail2ban保护Linux服务器?防止SSH暴力破解教程
  • 开源 C# 快速开发(五)自定义控件--仪表盘
  • 华为FreeClip 2耳夹耳机:让「戴着不摘」成为新的使用习惯
  • 算法继续刷起-2025年09月26日
  • AI笔记在学习与工作中的高效运用
  • QML学习笔记(十四)QML的自定义模块
  • ubuntu一键安装vscode: 使用官方 APT 仓库
  • python做网站的 框架企业邮箱什么样子
  • 学习游戏制作记录(爆炸敌人的制作)
  • 第三方软件登记测试机构:【软件登记测试机构HTML5测试技术】
  • 元宇宙的宠物经济:虚拟宠物的饲养与交易
  • 如何在 CentOS 7 上安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 文件
  • 做网站的盈利模式北京软件开发公司找和丰软件专业
  • 长视频分析模型 LongVU 论文内容总结与技术架构解析
  • Datawhale25年9月组队学习:llm-preview+Task4:微调大模型
  • Unity-动画目标匹配