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
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 操作模式 寄存器组 异常类型 堆栈 中断
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 ...
最新文章
- Task三个列子的分享
- 落在我手里,今天你能嫁出去算我输!
- 与php有区别_php://output和php://stdout的区别
- Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
- 2.0、Android Studio编写你的应用
- 巧用SQL的全局临时表防止用户重复登录
- .txt文件改成.bat为什么没有反应
- C#EasyHook例子C# Hook 指定进程C#注入指定进程 z
- 【rmzt】小清新美女win7主题_7.14
- OpenCV第十四讲: Fast特征点与ORB特征点原理详解
- 迷你星球java,如何用手机制作迷你星球?迷你星球制作方法演示
- ADC的动态范围 DR
- 2020-2021年顶会上关于解决偏差(bias)问题的文献整理
- 台达PLC实现远程下载程序
- JS字符串转数组和数组转字符串
- 网易大数据面试题试解
- 机械硬盘数据迁移到固态硬盘怎么操作?
- 1.14 JavaScript5:常用DOM操作
- Centos 通过 Nginx 和 vsftpd 构建图片服务器
- springboot项目推荐的打包方式以及springboot项目的瘦身!!!!
热门文章
- ubuntu命令安装jdk
- 纪念自己的第四个App:秘密Secret
- 尽量使用int型的列类型
- 使用ASP.NET MVC Futures 中的异步Action
- 用JSP实现上传文件的两种方法
- c语言 文件截断,c – 是否有一种正统的方法来避免编译器警告C4309 – “二进制文件输出的”常数值的截断“?...
- centos6.5安装mysql8_Centos6.5在线安装mysql 8.0详细教程
- 【Python】调用百度云API驾驶行为分析 Driver Behavior
- 2.4 残差网络为什么有用-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
- STM32 电机教程 19 - 基于ST MC Workbench 单电阻FOC