ARM的37个寄存器详解
来源:互联网 发布:中国对外贸易数据分析 编辑:程序博客网 时间:2024/06/11 12:13
ARM共有37个寄存器,都是32位长度
37个寄存器中30个为“通用”型,1个固定用作PC,一个固定用作CPSR,5个固定用作5种异常模式下的SPSR。
注意:System模式使用User模式寄存器。当ARM从用户模式(User)切换到快速中断模式(FIQ),寄存器r0~r7,r15是不变的,FIQ的寄存器r8~r14切换User模式下的同名寄存器。其它几种模式之间切换同理。
ARM总共有37个寄存器,但是每种模式下最多只能看到18个寄存器,其它寄存器虽然名字相同但是在当前模式不可见。
对r13这个名字来说,在ARM中共有6个名叫r13(又叫sp)的寄存器,但是在每种特定处理器模式下,只有一个r13是当前可见的,其它的r13必须切换到它的对应模式下才能看到。这种设计叫影子寄存器。
寄存器的作用:
r13(sp)是堆栈(程序工作现场)指针,如果7种模式都是采用同一个堆栈指针的话,在某一个模式中,堆栈出现了问题,则会导致7种模式都奔溃,故7种模式的栈都是不同的。
r14(lr)是存储返回地址的。在用户模式跳到中断模式,然后再调回用户模式,就可以用该返回地址。中断模式下的函数调用也可以用到该返回地址。
r15(pc)是程序控制计数器,记录当前程序处理到哪里。所以CPU只有一个程序指针,PC指向哪里,CPU就会执行哪条指令(所以程序跳转时就是把目标地址代码放到PC中)
cpsr是程序状态寄存器,用来记录CPU运行状态,每个CPU都有一个
spsr是用来保存cpsr的
CPSR状态寄存器
中断禁止位:
I:普通中断
F:快速中断
条件位(自动运算):
N:ALU运算结果负位
Z:ALU运算结果负位
C:进位标志位
V:有溢出
CPSR中各个bit位表明了CPU的某些状态信息,这些信息非常重要,和后面学到的汇编指令息息相关(譬如BLE指令中的E就和CPSR中的Z标志位有关)
CPSR中的I,F位和开中断、关中断有关
CPSR中的mode位(bit4~bit0共5位)决定了CPU的工作模式,在uboot代码中会使用汇编进行设置
- 1.11.ARM的37个寄存器详解
- ARM的37个寄存器详解
- ARM第一部分-ARM的37个寄存器详解
- ARM的37个寄存器
- ARM的37个寄存器介绍
- arm 37个通用寄存器
- arm 37个通用寄存器
- ARM的7种工作模式、37个通用寄存器、CPSR程序状态寄存器
- Arm汇编学习笔记(四)——Arm的37个寄存器和异常处理
- ARM中断寄存器详解
- ARM寄存器详解
- ARM中断寄存器详解
- ARM 寄存器详解
- ARM寄存器详解
- ARM的7中工作模式和37个通用寄存器
- S5PV210系列(裸机二) ARM的编程模式、7种模式和37个寄存器
- arm中断控制寄存器详解
- arm中断控制寄存器详解
- 内部类
- jvm的OOM
- EGit(Git Eclipse Plugin)使用(转载)
- HSSFWorkbook操作Excel例子
- CCF CSP真题——201709-2 公共钥匙盒
- ARM的37个寄存器详解
- CyberLink PhotoDirector Ultra(相片大师9)官方中文版V9.0.2406.0下载 | photodirector 9破解版
- 网站的高性能架构-WEB前端性能优化
- IT风投的优势
- The advance of Jave -- Socket, Class Loading, Reflect, AOP(Day06)
- 道德焦虑与利他动机
- get方法/post方法应用拦截器
- 网站的高性能架构-应用服务器性能优化
- HDOJ1994 利息计算