Cortex-M3寄存器组
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寄存器组相关推荐
- Cortex M3寄存器组
寄存器组 宗旨:技术的学习是有限的,分享的精神是无限的. 1.通用目的寄存器R0~R7 R0-R7 也被称为低组寄存器.所有指令都能访问它们.它们的字长全是 32 位,复位后的初始值是不可预料的. 2 ...
- cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断
cortex-m3 操作模式 寄存器组 异常类型 堆栈 中断 参考 操作模式 处理器的操作模式:为了区别正在执行代码的类型.复位后,处理器进入线程模式.特权级. 处理者模式(handler mode) ...
- Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)
架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...
- Cortex-A7 MPCore 架构详细介绍(九种运行模式、内核寄存器组R0~R15,有特定的名字和功能)
目录 0.ARM架构的历史简介 1.Cortex-A7 MPCore(即多核) 简介 2.Cortex-A 处理器九种运行模式 3.Cortex-A 寄存器组(内核寄存器) 3.1通用寄存器 3.1. ...
- Cortex M3 NVIC与中断控制
Cortex M3 NVIC与中断控制 宗旨:技术的学习是有限的,分享的精神是无限的. 一.NVIC概览 --嵌套中断向量表控制器 NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断 ...
- cortex m3的操作模式和状态
1.操作状态(operation state): debug state:处理器在调试器发起halt或匹配到断点时,会进入debug state并停止执行指令. thumb state:处理器正在运行 ...
- Cortex‐M3的Faults异常究竟是什么?
关注+星标公众号,不错过精彩内容 作者 | strongerHuang 微信公众号 | strongerHuang 有许多朋友在学习,或者开发STM32时都遇到过HardFault_Handler的情 ...
- Cortex‐M3和Cortex‐M0是否都能位带操作
最近在进行stm32l011f4的编程,想到stm32有位带操作,便想试一试,但是事与愿违,先贴下位带操作代码 Cortex‐M0的位带操作代码 //IO输出方向设置 #define SDA_IN() ...
- Cortex-M3中的寄存器组
文章目录 1 Cortex-M3中的寄存器组 1.1 寄存器组 1.2 MSP和PSP 1.3 Cortex-M3中的堆栈 1.4 程序状态寄存器 1.5 异常屏蔽寄存器 1 Cortex-M3中的寄 ...
- Cortex-A 的内核寄存器组
Cortex-A 的内核寄存器组 详见<ARM Cortex-A(armV7)编程手册 V4.0.pdf>的"第 3 章 ARM Processor ModesAnd Regis ...
最新文章
- bzoj 2565: 最长双回文串 manacher算法
- java制表符_Java地位无可动摇的12个原因
- first OData Batch operation when Sales Pipeline is launched
- Java面向对象编程(高级)
- python 内存_一行Python解决内存问题
- 加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
- 【Linux】服务管理命令和压缩管理的详细解读
- JS中如何判断null
- 赠书 | 数据库怎么选择?终于有人讲明白了
- python将图片名写入txt后最新命名并增强图片
- windows10中最强大王爽汇编语言学习环境
- java word 图片_java导出word(带图片)
- 银行机构的分类、特点及转型方向
- Linq的where语句中如果有两个条件以上的写法
- python词云生成与设计实现_基于python的词云生成(二)
- C++17 结构化绑定
- 微星 GL62M 7RD SSD+HDD双硬盘 安装双系统(win10+ubuntu 16.04)
- Arduino与Matlab的串口通讯:通过光敏电阻进行人数统计,以及改进:人物方向的判断并进行加减。
- 2018-08-11 自学笔记
- 【GAMES104】 渲染的其他内容
热门文章
- ERROR: No matching distribution found for mysqlclient==2.0.3
- mysql 最短路经_poj 3613 Cow Relays 经L边的最短路 | 学步园
- 平面向量坐标加法c语言,PTA-C语言 习题9-3 平面向量加法 (15分)
- mariadb不能导入与mysql可以,mysql/mariadb知识点总结(12):insert语句总结
- python用什么处理文件_利用Python如何快速处理文件
- idea连接mysql怎么生成实体类_IDEA链接数据库自动生成实体类
- 论文英文参考文献[10]的时候后面多空格_英文学术论文标点符号使用规范
- UBI文件系统和镜像的制作及分区挂载说明
- java aes pbe_JAVA对称加密算法PBE定义与用法实例分析
- 界址点圆圈怎么生成_技巧|CASS10.1的界址点圆圈如何变细?