1.1.1   ARM处理器不同模式下寄存器

CPU的模式不同,在其对应模式下可以使用的寄存器也不相同,如表3-2所示:

表3-2 ARM处理器模式下寄存器

寄存器类别

寄存器在汇编中的名称

各模式下实际访问的寄存器

用户

系统

管理

终止

未定义

中断

快中断

通用寄存器和程序计数器

R0(a1)

R0

R1(a2)

R1

R2(a3)

R2

R3(a4)

R3

R4(v1)

R4

R5(v2)

R5

R6(v3)

R6

R7(v4)

R7

R8(v5)

R8

R8_fiq

R9(SB,v6)

R9

R9_fiq

R10(SL,v7)

R10

R10_fiq

R11(FP,v8)

R11

R11_fiq

R12(IP)

R12

R12_fiq

R13(SP)

R13

R13_svc

R13_abt

R13_und

R13_irq

R13_fiq

R14(LR)

R14

R14_svc

R14_abt

R14_und

R14_irq

R14_fiq

R15(PC)

R15

状态寄存器

CPSR

CPSR

SPSR

SPSR_abt

SPSR_abt

SPSR_und

SPSR_irq

SPSR_fiq

                           

其中R0~R7在所有模式下都可以使用的共有寄存器,R8~R12是快速中断模式下私有的寄存器,其它模式下不能使用,之所以叫其快速中断,是因为快速中断模式下,这几个私有寄存器里数据在模式切换时可以不用入栈保存。

除了用户模式和系统模式共用一组R13,R14,其余每种模式都私有自己的R13,R14,因为在每种模式下都有自己的栈空间用于执行程序,在执行程序过程中还要保存返回地址,这样可以保证在进入不同模式时,当前模式下栈空间不被破坏。比如:网卡因为数据到达,产生了中断进入中断模式,在中断模式下有自己的中断处理例程(ISR),ISR在执行时要用到栈空间,因此要使用R13,R14。中断处理完成后,返回用户模式下,要继续执行被网卡中断信号中断的执行程序。

用户模式和系统模式为什么要共用一组R13,R14呢?这是因为,在特权模式下可以自由切换工作模式,但是如果切换到用户模式下,就不能再切换到特权模式了,这是CPU为操作系统提供的保护机制,但是有的时候就需要切换到用户模式下去使用其R13,R14寄存器,比如当操作系统的进程进行上下文切换时,如果用户模式和系统模式共用一组寄存器,那么可以切换到系统模式下(系统模式是特权模式)进行操作。

所有R15和CPU同时只能处理一条指令,在取指时,有一个CPSR表示当前<FONT face=""">CPU的状态即可。

处理器不同模式下寄存器相关推荐

  1. 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)

    作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42375701 相关资源下载 :  -- 三星 ARM Archit ...

  2. Xilinx Axi Dma Userspace模式下 寄存器 +MMAP 测试程序

    新上传的测试程序 等kenrel的部分 完成测试没问题, 可以分享一下 框架图 (long long time) gtthub https://github.com/HongDaYuGithub/fp ...

  3. stm32处理器调试模式下运行正常,上电自启动后运行不正常的故障排查分析

    最近负责一个项目,用到stm32f4的一款高性能芯片.研发过程中遇到一个很诡异的现象,前前后后折腾了两三天,最后才搞定.由于是新手,经验不足,排故过程很纠结~~ 现象如下: 1.采用JLINK下载程序 ...

  4. 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存器 CPSR SPSR | 模式设置代码编写 | 设置 svc 模式 )

    一. 处理器工作模式相关介绍 1. 处理器模式简介 (1) 处理器工作模式分类 (2) 处理器不同工作模式区别 (3) Linux 系统运行的模式 (4) 特权模式 说明 (5) 异常模式 (6) 系 ...

  5. 【Android 逆向】ARM CPU 架构体系 ( ARM 处理器工作模式 | ARM 架构模型 )

    文章目录 一.ARM 处理器工作模式 二.ARM 架构模型 一.ARM 处理器工作模式 参考 [嵌入式开发]ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存 ...

  6. 嵌入式ARM设计编程(三) 处理器工作模式

    文章和代码已归档至[Github仓库:hardware-tutorial],需要的朋友们自取.或者公众号[AIShareLab]回复 嵌入式 也可获取. 一.实验目的 (1) 通过实验掌握学会使用ms ...

  7. ARM体系架构—ARMv7-A处理器模式及寄存器

    一.ARMv7-A处理器模式 ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界. 在非 ...

  8. arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍

    ARM中所有寄存器都是32位的.这里以cortex-a7内核的MX6ULL处理器为例,按照功能可以分为两类:运行需要寄存器(程序正常运行所需要的,比如变量暂存,pc制作等,总共43个),系统管理控制寄 ...

  9. 内核基础 - 实模式与保护模式下的寄存器计算机的启动过程(by quqi99)

    作者:张华  发表于:2016-03-01 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) CP ...

最新文章

  1. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
  2. 三年python面试题_300道Python面试题
  3. 编程方法学17:多维数组
  4. VC++动态链接库编程之MFC DLL
  5. php怎么改,php怎么修改图片
  6. SAP Spartacus里的不同种类的CMS Component type
  7. iOS应用图片命名规则
  8. 一个memset函数使用时的坑
  9. 迷你MVVM框架 avalonjs 0.71发布
  10. GHOST自动恢复说明
  11. 学堂在线计算机通信网络,第二章 数据通信的基础知识 计算机网络笔记 学堂在线 2.4差错控制...
  12. 【建议收藏】 11个适合程序员逛的在线社区
  13. 一看就停不下来的中国史
  14. python 爬虫 短信验证码
  15. Vmware 虚拟机安装 Ubuntu
  16. MATLAB 2019 快速入门教程(官方手册翻译)(1/4)
  17. 时间管理37条法则:让盖茨、巴菲特受益一生
  18. 2021年前端面试题及答案
  19. wince5.0模拟器连接ActiveSync和共享网络PC分享上网及运行BS程序(模拟手持设备)
  20. 利用代码制作电脑中毒假象

热门文章

  1. python图片转base64编码,与base64编码转图片
  2. 得到当前python解释器的路径
  3. ndarry转置二阶及以上的矩阵
  4. 理解《Deblurring Text Images via L0-Regularized Intensity and Gradient Prior》
  5. Vijos1775 CodeVS1174 NOIP2009 靶形数独
  6. 深入分析linux内核及其应用(更新完毕)
  7. 11、MFC中自定义消息
  8. python 多进程 调用模块内函数_python--多进程的用法详解实例
  9. Hive之安装 部署
  10. (13)Zynq DDR控制器介绍