一、ARM 采用的是32位架构

1、ARM约定

Byte:8 bits

Halfword:16 bits (2 byte)

Word:32 bits (4 byte)

2、大部分ARM core 提供

ARM 指令集(32-bit) 每条指令都是4个字节?

Thumb 指令集(16-bit )

Thumb2指令集(16 & 32bit)

二、ARM的7种基本工作模式

普通模式(Normal)

(1)User:非特权模式,大部分任务执行在这种模式

特权模式(Privilege)

(2)FIQ:当一个高优先级(fast) 中断产生时将会进入这种模式

(3)IRQ:当一个低优先级(normal) 中断产生时将会进入这种模式

(4)Supervisor:当复位或软中断指令执行时将会进入这种模式(SVC模式)

(5)Abort:当存取异常时将会进入这种模式

(6)Undef:当执行未定义指令时会进入这种模式

(7)System:使用和User模式相同寄存器集的特权模式。

  • 各种模式的切换,可以是程序员通过代码主动切换(通过写CPSR寄存器),也可以是CPU在某些情况下自动切换。
  • 各种模式下权限和可以访问的寄存器不同。
  • 同一时刻只处于其中一种模式。
  • 操作系统有安全级别要求,因此CPU设计多种模式是为了方便操作系统的多种角色安全等级需要。
  • 不同模式下,对资源的访问权限不一样。

三、37个通用寄存器

1、寄存器分类和区别

(1)SoC中有2类寄存器:通用寄存器和SFR

  • 通用寄存器(ARM中有37个)是CPU的组成部分,CPU的很多活动都需要通用寄存器的支持和参与。
  • SFR(special function register,特殊功能寄存器)属于外设硬件的组成部分,我们通过访问外设的SFR来编程操控这个外设,这就是硬件编程控制的方法。

(2)通用寄存器没有地址,通过寄存器名字来访问;而特殊功能寄存器有地址。

(3)寄存器是外设硬件的软件编程接口API。使用软件编程控制某一硬件,其实就是编程读写该硬件的寄存器。

2、37个通用寄存器

(1)ARM总共有37个寄存器,但是每种模式下最多只能看到18个寄存器,其他寄存器虽然名字相同但是在当前模式不可见。
  • 对r13这个名字来说,在ARM中共有6个名叫r13(又叫sp,栈指针)的寄存器,但是在每种特定处理器模式下,只有一个r13是当前可见的,其他的r13必须切换到他的对应模式下才能看到。这种设计叫影子寄存器(banked register)。
(2)ARM共有37个寄存器,都是32位长度。
  • 30个为“通用”型;
  • 1个固定用作PC(Program control register,程序控制寄存器,PC指向哪里,CPU就会执行哪条指令,因此只有一个);
  • 1个固定用作CPSR(程序状态寄存器,用来记录当前cpu的状态,因此只有一个);
  • 5个固定用作5种异常模式下的SPSR(Saved Program Status Register,程序状态保存寄存器,用来保存CPSR的,返回时将spsr赋给cpsr)。
(3)lr用来存储返回地址
(4)第二幅图中带颜色的,表示每种模式下特有的寄存器。
四、CPSR程序状态寄存器
 
(1)CPSR中各个bit位表明了CPU的某些状态信息,这些信息非常重要,和后面学到的汇编指令息息相关(譬如BLE指令中的E就和CPSR中的Z标志位有关)。
(2)CPSR中的I、F位和开中断、关中断有关。
(3)CPSR中的mode位(bit4~bit0共5位)决定了CPU的工作模式,在uboot代码中会使用汇编进行设置。

ARM的7种工作模式、37个通用寄存器、CPSR程序状态寄存器相关推荐

  1. [ARM] ARM处理器的7种工作模式和2种工作状态

    转载:https://blog.csdn.net/ly930156123/article/details/79219303 两种工作状态 1.ARM状态:32位,ARM状态执行字对齐的32位ARM指令 ...

  2. ARM寄存器的7种工作模式和几种寻址方式

    ARM寄存器的7种工作模式 CPSR[5:0] 10000 user 10001 FIQ 10010 IRQ 10011 SVC 10111 中止 11011 未定义 11111 系统 用这两个指令读 ...

  3. stm32芯片休眠模式_STM32的运行、睡眠、停止和待机四种工作模式

    01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗,这三种模式中, ...

  4. AndroidManifest.xml文件详解(activity)(三)四种工作模式

    android:launchMode 这个属性定义了应该如何启动Activity的一个指令.有四种工作模式会跟Intent对象中的Activity标记(FLAG_ACTIVITY_*常量)结合在一起用 ...

  5. linux apache两种工作模式详解

    apache两种工作模式详解 刚接触这两个配置时很迷糊,全部开启或全部注释没有几多变化.今天搜索到这么一篇讲得还不错的文章,看了几篇,还是不能完全记住,做一个收藏. 空闲子进程:是指没有正在处理请求的 ...

  6. 再谈STM32的CAN过滤器-bxCAN的过滤器的4种工作模式以及使用方法总结

    1. 前言 bxCAN是STM32系列最稳定的IP核之一,无论有哪个新型号出来,这个IP核基本未变,可见这个IP核的设计是相当成熟的.本文所讲述的内容属于这个IP核的一部分,掌握了本文所讲内容,就可以 ...

  7. 终端服务器有多种运行模式,云终端的三种工作模式你都知道的吗

    原标题:云终端的三种工作模式你都知道的吗 不知道大家有没有发现这几年来我们办公的电脑不知不觉中有笨重的台式机逐渐变成了小巧的云终端在使用的,我们去医院看病时也发现他们的办公的台式机也变成了云终端,甚至 ...

  8. Oracle 的两种工作模式Dedicated Server 和 Shared Server

    Oracle可以分成两种工作模式, 分别是 Dedicated Server 和 Shared Server                   1  Dedicated Server         ...

  9. 8086的两种工作模式_Lora自组网网关的两种工作模式

    LoRa技术具有远距离.低功耗.多节点.低成本和抗干扰的特点.另一方面,LoRa低速率支持较小的数据传输. 服务器.终端(内置LoRa模块).网关(或基站).云四部分组成了LoRa网络.如下所示 Lo ...

最新文章

  1. NoClassDefFoundError: org/apache/flink/api/scala/typeutils/CaseClassTypeInfo
  2. maven+springmvc下载excle文件——ie8可用
  3. eclipse 64位_如何安装调试 Java开发工具Eclipse和JDK环境
  4. - 动规讲解基础讲解八——正整数分组
  5. linux命令别名永久生效
  6. Angularjs的My97DatePicker扩展
  7. 字节、快手、阿里、腾讯这两年的广告推荐技术进展
  8. 使用openssl 来生成rsa pkcs1 2048格式的公私钥
  9. Net share 命令详解
  10. Java 算法:带权图Weighted Graph
  11. Android---性能优化方案分享,高级android开发强化实战pdf
  12. python正则表达式多匹配成了断句
  13. 高通芯片联机读取修改串码 meid ESN wifi 蓝牙 sn等参数的操作解析{二}
  14. 谷歌牛逼:720p高清+长镜头,网友:对短视频行业冲击太大
  15. VR头显中的一朵奇葩,FaceDisplay使用三屏交互
  16. java线程知识总结
  17. 249、海康8700监控服务平台如何配置手机远程访问
  18. Word文档转换Markdown文档
  19. notebook pip install 只有星号_世界上最小的船,只有四个红细胞那么长
  20. STM32外部Flash移植FATFS笔记

热门文章

  1. 数值计算算法-多项式插值算法的实现与分析
  2. The serializable class XXX does not declare a static final serialVersionUID field of type long的警告...
  3. Service-Oriented Architecture,SOA(转)
  4. JTLParser-linux上jmeter的jtl文件二次分析
  5. codevs2171 棋盘覆盖
  6. [转]用Whois获得电信运营商的IP地址是如何分配的?
  7. C#使用StreamReader类读取文件文件
  8. VB6.0和VB.Net对照表
  9. C++之运算符重载(下)
  10. UPS开始尝试“货车+无人机”的投递方式,不必再担心快递员离职了