ARM处理器含有37个寄存器,这些寄存器包含以下两类:

1. 31个通用寄存器:包括程序计数器PC等,都是32位的寄存器。

2. 6个状态寄存器


下面这幅图就是ARM中的 37 个寄存器:




下面这幅图是 7种工作模式下每个模式下的寄存器列表:


综上:

* ARM共有37个寄存器,每个寄存器都是32位的长度。

* 37个寄存器中30个为“通用型”,1个固定用作PC,一个固定用作CPSR,5个固定用作5种异常模式下的SPSR。


下面说一下CPSR程序状态寄存器:


这里我主要记住高四位:

1.条件标志位 

-N: Negative result from ALU

 -Z: Zero result from ALU

 -C: ALU operation Carried out (进位/借位)

 -V: ALU operation overflowed (溢出)

* N=1时,说明运算的结果为负数,N=0时,说明运算的结果为正数或零。

* Z=1时,说明运算的结果为0,Z=0时,说明运算的结果为非0。

* C:

 - 加法运算(包括CMP):当运算结果产生了进位时(无符号数溢出),C=1,否则为0。

 - 减法运算(包括CMP):当运算结果产生了借位时(无符号数溢出),C=0,否则C=1。

 - 对于包含移位操作的非加减指令操作时,C为移除值的最后一位。

 - 对于其它的非加减指令,C的值通常不变。

* V:

 - 对于加减法运算指令,当操作数和运算结果为二进制的补码表示的带符号数时,V=1表示符号位溢出

 - 对于其它的非加减法指令,V的值通常不变。


2.Q位:

* 在ARM V5及以上的版本的E系列处理器中,Q标识位指示增强的DSP运算指令是否发生了溢出,在其它版本的处理器中,Q未定义。


3.J位:

* 仅ARM 5TE/J 架构支持

* J=1时,处理器处于Jazelle状态


4.中断禁止位:

* I=1,禁止IRQ

* F=1,禁止FIQ


5.T位:

* 仅ARM xT架构支持

* T=0,处理器处于ARM状态

* T=1,处理器处于Thumb状态


6.Mode位:

* 处理器工作模式选择位


注意:

* CPSR中的各个位表明了CPU的某个状态信息,这些信息和后面我们用的汇编指令息息相关。

* CPSR的I、F位和开中断、关中断有关。

* CPSR的Mode位决定了CPU的工作模式,在uBoot代码中会使用汇编代码进行设置。


PC(R15)程序控制寄存器:

* PC(Program Control Register)为程序指针,PC指向哪里,CPU就会指向哪条指令(所以程序跳转时就是把目标地址代码放到PC中)。

* 整个CPU中只有一个PC(CPSR也只有一个,但SPSR有5个)。




1.11.ARM的37个寄存器详解相关推荐

  1. ARM的37个寄存器详解

    ARM的37个寄存器 1.ARM CPU内部寄存器概览: 2._shadow register(影子寄存器)_的概念引入 ARM总共有37个寄存器,每种工作模式下最多有18个可见,我们把上图中那些名称 ...

  2. ARM通用寄存器及状态寄存器详解

    关注.星标公众号,直达精彩内容 素材来源:https://blog.csdn.net/qq_34430371/article/details/125820927 整理:技术让梦想更伟大 | 李肖遥 笔 ...

  3. 大脸猫讲逆向之ARM汇编中PC寄存器详解

    i春秋作家:v4ever 近日,在研究一些开源native层hook方案的实现方式,并据此对ARM汇编层中容易出问题的一些地方做了整理,以便后来人能有从中有所收获并应用于现实问题中.当然,文中许多介绍 ...

  4. ARM 寄存器 详解

    From( ARM 寄存器详解 ):https://blog.csdn.net/sandeldeng/article/details/52954781 ARM 汇编基础教程:2.数据类型和寄存器:ht ...

  5. ARM 37 个通用寄存器详解

    一.简介 1.ARM 总共有 37 个寄存器,但是每种模式下最多只能看到 18 个寄存器,其他寄存器虽然名字相同,但是在当前模式不可见. 2.例如,对 r13 这个名字来说,在 ARM 中共有 6 个 ...

  6. 16位汇编语言第二讲系统调用原理,以及各个寄存器详解

    16位汇编语言第二讲系统调用原理,以及各个寄存器详解 昨天已将简单的写了一下汇编代码,并且执行了第一个显示到屏幕的helloworld 问题? helloworld怎么显示出来了. 一丶显卡,显存的概 ...

  7. x86 - CPU架构/寄存器详解 (三) 保护模式

    系列文章 x86 - CPU架构/寄存器详解 (一)x86.8086.i386.IA-32 是什么? x86 - CPU架构/寄存器详解 (二) 实模式(8086模式) x86 - CPU架构/寄存器 ...

  8. C++11 并发指南三(std::mutex 详解)

    上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::thread 的一些用法,并给出了两个小例子,本文将介绍 std::mutex 的用法. Mutex ...

  9. 【转】C++11 并发指南五(std::condition_variable 详解)

    http://www.cnblogs.com/haippy/p/3252041.html 前面三讲<C++11 并发指南二(std::thread 详解)>,<C++11 并发指南三 ...

最新文章

  1. c++动态分配二维数组
  2. 过滤请求绝技,布隆过滤器与布谷鸟过滤器
  3. html 列表bootstrap,bootstrap都有哪些类?
  4. 【BLE MIDI】MIDI 文件格式分析 ( FF 58 04 拍号 | 音符开指令 | 音符关指令 | 音轨结束标志 )
  5. 数据结构——双向链表的实现
  6. poj 2531(dfs)
  7. JavaWeb学习----Cookie实现记住密码的功能
  8. 三大高通量测序平台芯片通量对比图(请把手机横过来看))
  9. 英雄会被表彰,这些技术与代码也将载入史册!
  10. gson 不忽略空_仅在不为null或不为空的情况下,Gson序列化字段
  11. php中echo和print的区别
  12. PostgreSQL系统字段
  13. mac android 调试快捷键,Mac Android Studio快捷键整理_IOS_脚本之家
  14. CTF 湖湘杯 2018 WriteUp (部分)
  15. ASCIIMathML技术简介~
  16. linux群ping服务器各网段脚本
  17. iOS 拼音 Swift K3Pinyin
  18. 流光容易把人抛,红了樱桃,绿了芭蕉
  19. Word2016安装MathType流程及“53”.wll文件未找到错误解决办法
  20. 人脸识别c语言正方形,Matlab实现的基于FLD的人脸识别系统源代码

热门文章

  1. 打印机服务器属性添加哪个文件,如何设置打印机服务器属性如何找到打印机服务器属性...
  2. Codeforces Round #570 (Div. 3)B. Equalize Prices
  3. 全媒舍:活动策划的几个要点与常用做法
  4. 双18期|CSS揭秘之简写属性
  5. 经典编程书籍大全-python
  6. 阿里云服务器部署app服务器端-流程步骤
  7. Spring Boot系列六 Spring boot集成mybatis、分页插件pagehelper
  8. 软件工程-软件工程基本概念
  9. stm32 BKP寄存器操作[操作寄存器+库函数]
  10. 自定义UITableView索引动画,实现饿了么菜单效果