处理器不同模式下寄存器
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的状态即可。
处理器不同模式下寄存器相关推荐
- 【嵌入式开发】ARM 芯片简介 (ARM芯片类型 | ARM处理器工作模式 | ARM 寄存器 | ARM 寻址)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42375701 相关资源下载 : -- 三星 ARM Archit ...
- Xilinx Axi Dma Userspace模式下 寄存器 +MMAP 测试程序
新上传的测试程序 等kenrel的部分 完成测试没问题, 可以分享一下 框架图 (long long time) gtthub https://github.com/HongDaYuGithub/fp ...
- stm32处理器调试模式下运行正常,上电自启动后运行不正常的故障排查分析
最近负责一个项目,用到stm32f4的一款高性能芯片.研发过程中遇到一个很诡异的现象,前前后后折腾了两三天,最后才搞定.由于是新手,经验不足,排故过程很纠结~~ 现象如下: 1.采用JLINK下载程序 ...
- 【嵌入式开发】ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存器 CPSR SPSR | 模式设置代码编写 | 设置 svc 模式 )
一. 处理器工作模式相关介绍 1. 处理器模式简介 (1) 处理器工作模式分类 (2) 处理器不同工作模式区别 (3) Linux 系统运行的模式 (4) 特权模式 说明 (5) 异常模式 (6) 系 ...
- 【Android 逆向】ARM CPU 架构体系 ( ARM 处理器工作模式 | ARM 架构模型 )
文章目录 一.ARM 处理器工作模式 二.ARM 架构模型 一.ARM 处理器工作模式 参考 [嵌入式开发]ARM 处理器工作模式 及 修改方法 ( 处理器模式 | 设置处理器模式 | 程序状态字寄存 ...
- 嵌入式ARM设计编程(三) 处理器工作模式
文章和代码已归档至[Github仓库:hardware-tutorial],需要的朋友们自取.或者公众号[AIShareLab]回复 嵌入式 也可获取. 一.实验目的 (1) 通过实验掌握学会使用ms ...
- ARM体系架构—ARMv7-A处理器模式及寄存器
一.ARMv7-A处理器模式 ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界. 在非 ...
- arm中SP,LR,PC寄存器以及其它所有寄存器以及处理器运行模式介绍
ARM中所有寄存器都是32位的.这里以cortex-a7内核的MX6ULL处理器为例,按照功能可以分为两类:运行需要寄存器(程序正常运行所需要的,比如变量暂存,pc制作等,总共43个),系统管理控制寄 ...
- 内核基础 - 实模式与保护模式下的寄存器计算机的启动过程(by quqi99)
作者:张华 发表于:2016-03-01 版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) CP ...
最新文章
- PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call
- 三年python面试题_300道Python面试题
- 编程方法学17:多维数组
- VC++动态链接库编程之MFC DLL
- php怎么改,php怎么修改图片
- SAP Spartacus里的不同种类的CMS Component type
- iOS应用图片命名规则
- 一个memset函数使用时的坑
- 迷你MVVM框架 avalonjs 0.71发布
- GHOST自动恢复说明
- 学堂在线计算机通信网络,第二章 数据通信的基础知识 计算机网络笔记 学堂在线 2.4差错控制...
- 【建议收藏】 11个适合程序员逛的在线社区
- 一看就停不下来的中国史
- python 爬虫 短信验证码
- Vmware 虚拟机安装 Ubuntu
- MATLAB 2019 快速入门教程(官方手册翻译)(1/4)
- 时间管理37条法则:让盖茨、巴菲特受益一生
- 2021年前端面试题及答案
- wince5.0模拟器连接ActiveSync和共享网络PC分享上网及运行BS程序(模拟手持设备)
- 利用代码制作电脑中毒假象