1、通用目的寄存器R0~R7

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

2、通用目的寄存器 R8-R12

R8-R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们, 32 位的thumb-2 指令则不受限制。它们也是 32 位字长,且复位后的初始值是不可预料的。

3、特殊功能寄存器


程序状态寄存器:APSR, IPSR, EPSR  ---- 通过MRS/MSR 指令,这3 个PSRs 即可以单独访问,也可以组合访问(2 个组合,3 个
组合都可以)。当使用三合一的方式访问时,应使用名字“xPSR”或者“PSR”。

APSR:

N:负条件码标志位,运算结果小于0,N=1, 大于等于0,N=0;

Z:零条件码标志位,运算结果为0,Z=1;

C:进位条件码标志位,运算指令产生进位(无符号加法溢出),C=1;

V:溢出条件码标志位,运算溢出(有符号加法溢出), V=1;

Q:饱和条件码标志位;

IPSR:处于线程模式时,该位域为0;在手柄模式下,该位域为当前异常的异常号。

EPSR:

T:Thumb状态, T=1,ARM状态,T=0;

PRIMASK, FAULTMASK 和 BASEPRI:控制异常的使能和除能

控制寄存器CONTROL:其一用于定义特权级别,其二用于选择当前使用哪个堆栈指针。

4、堆栈指针R13

R13 是堆栈指针。在 CM3 处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用 R13(或写作 SP)时,引用到的是当前正在使用的那一个,另一个必须用特殊的指令来访问( MRS,MSR指令)。

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

进程堆栈指针(PSP),或写作 SP_process。用于常规的应用程序代码(不处于异常服用例程中时)。

5、连接寄存器R14

R14 是连接寄存器( LR)。在一个汇编程序中,你可以把它写作 both LR 和 R14。 LR 用于在调用子程序时存储返回地址。例如,当你在使用 BL(分支并连接, Branch and Link)指令时,就自动填充 LR的值。

6、程序计数器R15

R15 是程序计数器,在汇编代码中一般我们都都叫它的外号“ PC”。因为 CM3 内部使用了指令流水线,读 PC 时返回的值是当前指令的地址+4。




Cortex-M3寄存器组相关推荐

  1. Cortex M3寄存器组

    寄存器组 宗旨:技术的学习是有限的,分享的精神是无限的. 1.通用目的寄存器R0~R7 R0-R7 也被称为低组寄存器.所有指令都能访问它们.它们的字长全是 32 位,复位后的初始值是不可预料的. 2 ...

  2. cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断

    cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断 参考 操作模式 处理器的操作模式:为了区别正在执行代码的类型.复位后,处理器进入线程模式.特权级. 处理者模式(handler mode) ...

  3. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  4. Cortex-A7 MPCore 架构详细介绍(九种运行模式、内核寄存器组R0~R15,有特定的名字和功能)

    目录 0.ARM架构的历史简介 1.Cortex-A7 MPCore(即多核) 简介 2.Cortex-A 处理器九种运行模式 3.Cortex-A 寄存器组(内核寄存器) 3.1通用寄存器 3.1. ...

  5. Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...

  6. cortex m3的操作模式和状态

    1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...

  7. Cortex‐M3的Faults异常究竟是什么?

    关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 有许多朋友在学习,或者开发STM32时都遇到过HardFault_Handler的情 ...

  8. Cortex‐M3和Cortex‐M0是否都能位带操作

    最近在进行stm32l011f4的编程,想到stm32有位带操作,便想试一试,但是事与愿违,先贴下位带操作代码 Cortex‐M0的位带操作代码 //IO输出方向设置 #define SDA_IN() ...

  9. Cortex-M3中的寄存器组

    文章目录 1 Cortex-M3中的寄存器组 1.1 寄存器组 1.2 MSP和PSP 1.3 Cortex-M3中的堆栈 1.4 程序状态寄存器 1.5 异常屏蔽寄存器 1 Cortex-M3中的寄 ...

  10. Cortex-A 的内核寄存器组

    Cortex-A 的内核寄存器组 详见<ARM Cortex-A(armV7)编程手册 V4.0.pdf>的"第 3 章 ARM Processor ModesAnd Regis ...

最新文章

  1. bzoj 2565: 最长双回文串 manacher算法
  2. java制表符_Java地位无可动摇的12个原因
  3. first OData Batch operation when Sales Pipeline is launched
  4. Java面向对象编程(高级)
  5. python 内存_一行Python解决内存问题
  6. 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
  7. 【Linux】服务管理命令和压缩管理的详细解读
  8. JS中如何判断null
  9. 赠书 | 数据库怎么选择?终于有人讲明白了
  10. python将图片名写入txt后最新命名并增强图片
  11. windows10中最强大王爽汇编语言学习环境
  12. java word 图片_java导出word(带图片)
  13. 银行机构的分类、特点及转型方向
  14. Linq的where语句中如果有两个条件以上的写法
  15. python词云生成与设计实现_基于python的词云生成(二)
  16. C++17 结构化绑定
  17. 微星 GL62M 7RD SSD+HDD双硬盘 安装双系统(win10+ubuntu 16.04)
  18. Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。
  19. 2018-08-11 自学笔记
  20. 【GAMES104】 渲染的其他内容

热门文章

  1. ERROR: No matching distribution found for mysqlclient==2.0.3
  2. mysql 最短路经_poj 3613 Cow Relays 经L边的最短路 | 学步园
  3. 平面向量坐标加法c语言,PTA-C语言 习题9-3 平面向量加法 (15分)
  4. mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结
  5. python用什么处理文件_利用Python如何快速处理文件
  6. idea连接mysql怎么生成实体类_IDEA链接数据库自动生成实体类
  7. 论文英文参考文献[10]的时候后面多空格_英文学术论文标点符号使用规范
  8. UBI文件系统和镜像的制作及分区挂载说明
  9. java aes pbe_JAVA对称加密算法PBE定义与用法实例分析
  10. 界址点圆圈怎么生成_技巧|CASS10.1的界址点圆圈如何变细?