寄存器组


宗旨:技术的学习是有限的,分享的精神是无限的。


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。

版权声明:原创不易,转载请注明出处:http://blog.csdn.net/wqx521

Cortex M3寄存器组相关推荐

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

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

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

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

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

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

  4. Cortex M3 NVIC与中断控制

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

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

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

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

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

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

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

  8. Cortex-M3中的寄存器组

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

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

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

最新文章

  1. Task三个列子的分享
  2. 落在我手里,今天你能嫁出去算我输!
  3. 与php有区别_php://output和php://stdout的区别
  4. Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks
  5. 2.0、Android Studio编写你的应用
  6. 巧用SQL的全局临时表防止用户重复登录
  7. .txt文件改成.bat为什么没有反应
  8. C#EasyHook例子C# Hook 指定进程C#注入指定进程 z
  9. 【rmzt】小清新美女win7主题_7.14
  10. OpenCV第十四讲: Fast特征点与ORB特征点原理详解
  11. 迷你星球java,如何用手机制作迷你星球?迷你星球制作方法演示
  12. ADC的动态范围 DR
  13. 2020-2021年顶会上关于解决偏差(bias)问题的文献整理
  14. 台达PLC实现远程下载程序
  15. JS字符串转数组和数组转字符串
  16. 网易大数据面试题试解
  17. 机械硬盘数据迁移到固态硬盘怎么操作?
  18. 1.14 JavaScript5:常用DOM操作
  19. Centos 通过 Nginx 和 vsftpd 构建图片服务器
  20. springboot项目推荐的打包方式以及springboot项目的瘦身!!!!

热门文章

  1. ubuntu命令安装jdk
  2. 纪念自己的第四个App:秘密Secret
  3. 尽量使用int型的列类型
  4. 使用ASP.NET MVC Futures 中的异步Action
  5. 用JSP实现上传文件的两种方法
  6. c语言 文件截断,c – 是否有一种正统的方法来避免编译器警告C4309 – “二进制文件输出的”常数值的截断“?...
  7. centos6.5安装mysql8_Centos6.5在线安装mysql 8.0详细教程
  8. 【Python】调用百度云API驾驶行为分析 Driver Behavior
  9. 2.4 残差网络为什么有用-深度学习第四课《卷积神经网络》-Stanford吴恩达教授
  10. STM32 电机教程 19 - 基于ST MC Workbench 单电阻FOC