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

ARM寄存器组

 

CM3 拥有通用寄存器 R0‐R15 以及一些特殊功能寄存器。

95c0185a3ab44caf92c0828a60a9cd52.png

?code=ZDVhYjVjNDFkM2Y0MTJiMzI4YWMzYzY1YTJkNTM0NTRfSGxqSFl4QlFyU3JJZ2d0b1kyd2JXSkZFNEU0eEJDRTFfVG9rZW46WllGZGJRSzNrb3BydGt4RkkxcGNPNmtObkxlXzE2OTMyNjcwODM6MTY5MzI3MDY4M19WNA

R0-R7,通用目的寄存器

R0-R7也被称为低组寄存器,所有指令可以访问它们,它们的字长为32位,复位后的初始值是不可预料的。

R8-R12,通用目的寄存器

R8-R12也被称为高组寄存器,所有指令可以访问它们,它们的字长为32位,复位后的初始值是不可预料的。

R13,堆栈指针(Stack Pointer)

  • R13寄存器中存放的是堆栈的栈顶指针,CM3中有两个堆栈指针,也就支持两个堆栈。分别是:主堆栈指针(MSP, Main Stack Pointer),进程堆栈指针(PSP, Process Stack Pointer)。

  • 当引用R13或者SP时,你引用到的是当前正在使用的堆栈,另一个堆栈必须用特殊的指令来访问(MRS,MSR指令)。

  • 主堆栈指针(MSP),这是缺省的堆栈指针,它由OS内核,异常服务例程以及所有需要特权访问的应用程序代码来访问。

  • 进程堆栈指针(PSP),用于常规应用程序代码(不处于异常服务用例程中时)。

  • 堆栈主要是通过POP,PUSH指令来进行操作。在执行 PUSH 和 POP 操作时,那个通常被称为 SP 的地址寄存器,会自动被调整,以避免后续的操作破坏先前的数据。

R14 ,连接寄存器(Link Register)

在一个汇编程序中, LR 用于在调用子程序时存储返回地址。例如,在使用 BL(分支并连接, Branch and Link)指令时,就自动填充 LR 的值(执行函数调用的下一指令),进而在函数退出时,正确返回并执行下一指令。

如果函数中又调用了其他函数,那么LR将会被覆盖,所以需要先将LR寄存器入栈PUSH,保护起来。

R15,程序计数器(Program Count)

因为 CM3 内部使用了指令流水线,读 PC 时返回的值是当前指令的地址+4

 

特殊功能寄存器组

Cortex‐M3 中的特殊功能寄存器包括:

程序状态寄存器组( xPSR),存放当前CPU的状态

中断屏蔽寄存器组( PRIMASK, FAULTMASK,以及 BASEPRI),用于控制异常的使能和除能

控制寄存器( CONTROL),用于定义特权级别,以及选择当前使用堆栈指针(PSP/MSP?)。

 

http://www.lryc.cn/news/145796.html

相关文章:

  • Windows查看当前文件夹下的所有.c文件的个数
  • ubuntu Qt 地图离线调用
  • Android Studio升级到Android API 33版本后,XML布局输入没有提示
  • 操作XML(带命名空间)
  • 二叉搜索树(C++)
  • 软件架构知识点
  • C语言日常刷题6
  • 微信小程序使用stomp.js实现STOMP传输协议的实时聊天
  • 基于饥饿游戏算法优化的BP神经网络(预测应用) - 附代码
  • [ 云计算 | AWS ] Java 应用中使用 Amazon S3 进行存储桶和对象操作完全指南
  • 【Spring Boot】Spring Boot 配置 Hikari 数据库连接池
  • MR混合现实石油化工课堂情景实训教学演示
  • php thinkphp 抖音支付,订单同步接口分享
  • excel功能区(ribbonx)编程笔记--2 button控件与checkbox控件
  • JavaScript 知识点
  • 深入理解 JVM 之——动手编译 JDK
  • [移动通讯]【Carrier Aggregation in LTE】【 Theory + Log analysis-1】
  • Sui诚邀您参加KBW「首尔Web3之夜」
  • 19.CSS雨云动画特效
  • 第61步 深度学习图像识别:多分类建模(TensorFlow)
  • Spark 7:Spark SQL 函数定义
  • ThinkPHP 文件上传 fileSystem 扩展的使用
  • 液体神经网络LLN:通过动态信息流彻底改变人工智能
  • 2023年的今天,PMP项目管理认证还值得考吗?
  • 【JavaSE专栏91】Java如何主动发起Http、Https请求?
  • 给oracle逻辑导出clob大字段、大数据量表提提速
  • 研发规范第九讲:通用类命名规范(重点)
  • python+django+协同过滤算法-基于爬虫的个性化书籍推荐系统(包含报告+源码+开题)
  • 系统架构:软件工程
  • 泰迪大数据实训平台产品介绍