我们先来看一张图:

这张图是ARM手册中的寄存器状态图,我想大部分人应该首先会想到它吧。正如手册中所讲的,这张图中包含37个32位寄存器,其中有31个通用寄存器6个状态寄存器CPU会根据不同的工作模式,使部分寄存器可见(即可被使用),图中有灰色下标的正是不同模式下可见的寄存器,被称为分组寄存器。未分组的寄存器在不同模式下都是可见的,但是在寄存器使用时,分组寄存器会屏蔽共享寄存器,从而实现特殊用途。

37个寄存器实际如下图所示:


转换成我们熟悉的手册中的图,如下图:


我们需要特殊指出几个寄存器:

1、R13 ——> SP,为堆栈寄存器,用于C语言类程序之间调用所需的空间指针;

2、R14 ——> LR,为连接寄存器,在发生程序调用时,一般用户存放程序返回地址;

3、R15 ——> PC,为程序计数寄存器,存放西一条要执行的程序码地址。

程序状态寄存器

CPSR(Current Program Status Register)表示当前程序状态寄存器,SPSR(Saved Program Status Register)用来保存异常程序处理个程序状态,这些寄存器的格式和功能见下图所示。

寄存器的具体详细描述见数据手册,另外我们在贴一张Thumb指令下的寄存器和对比图

<<< 返回博客架构

ARM内核中寄存器的浅见相关推荐

  1. jtag访问arm内核寄存器

    jtag的原理图 jtag接口访问arm Device ID code register的步骤 jtag接口访问arm Device ID code register的功能验证的testbench j ...

  2. 【Android 逆向】Android 进程注入工具开发 ( 调试进程中寄存器的作用 | 通过 EIP 寄存器控制程序运行 | EIP 寄存器的存档与恢复 )

    文章目录 一.调试进程中寄存器的作用 二.通过 EIP 寄存器控制程序运行 三.EIP 寄存器的存档与恢复 一.调试进程中寄存器的作用 内存是一个线性结构 , 将动态库加载到内存中后 , 每个动态库文 ...

  3. Linux内核ARM构架中原子变量的底层实现研究

    前段时间重新研究了一下Linux的并发控制机制,对于内核的自旋锁.互斥锁.信号量等机制及其变体做了底层代码上的研究.因为只有从原理上理解了这些机制,在编写驱动的时候才会记得应该注意什么.这些机制基本都 ...

  4. linux内核中linux中readl()和writel()函数---用于读写寄存器

    现在在一些arm高级一点的处理器上配置寄存器的方式其实就是直接访问寄存器地址,可以简单的写成*(uint32_t *)(addr) = val.也可以通过readl()函数和writel()函数对一些 ...

  5. ARM 内核SP,LR,PC寄存器的理解

    ARM 内核SP,LR,PC寄存器 深入理解ARM的这三个寄存器,对编程以及操作系统的移植都有很大的裨益. 1.堆栈指针r13(SP):每一种异常模式都有其自己独立的r13,它通常指向异常模式所专用的 ...

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

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

  7. ARM内核——寄存器功能讲解

    根据"ARM-thumb 过程调用标准": 通用寄存器 通用寄存器包含R0到R12,13个寄存器 R0-R3 用作传入函数参数,传出函数返回值.在子程序调用之间,可以将 r0-r3 ...

  8. ARM处理器中CP15协处理器的寄存器1376698090

    本章和第5章的内容都与ARM处理器中CP15协处理器的寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令. 4.1.1  访问CP15寄存器的指令 访问CP15寄存 ...

  9. Linux内核中的GPIO系统之(3):pin controller driver代码分析

    一.前言 对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道,pin control subsystem也不例外,被它驱动的硬件叫做pin controller(一般ARM soc的datash ...

最新文章

  1. in和exists以及not in 和not exists有什么不同?(笔记)
  2. 基本入门程序编写格式和注意事项
  3. MySQL Cookbook 学习笔记-04
  4. (软件工程复习核心重点)第十二章软件项目管理-第一节:软件项目管理综述、估算软件规模和工作量估算
  5. HTML5缓存和GPS定位
  6. 马斯克又有新麻烦上身!前员工将他告到美国证监会,曝出一大堆惊天八卦
  7. 【转】灵活运用 SQL SERVER FOR XML PATH
  8. [core java学习笔记][第十一章异常断言日志调试]
  9. 如何解决Please ensure that adb is correctly located at......
  10. 计算机视觉算法_RANSAC 估计
  11. 为什么每天工作那么努力,却无法突破职场瓶颈?
  12. PMP干货教你一秒选对PMP考试答案!
  13. 使用计算机录制声音10,win10系统电脑中如何解决录屏时无法录制声音的问题
  14. 路由器实验之配置实验、直连路由验证、静态路由
  15. 京东评价项目示例——在线分析及可视化
  16. HALCON算子函数总结(中)
  17. QCC512x QCC302x 打开 BLE 功能
  18. 机器视觉表面缺陷检测综述
  19. H.265的各种帧(详解):接入图像
  20. 实现抖音视频抖动效果---OpenCV-Python开发指南(53)

热门文章

  1. YouTube联合创始人或将再次创业
  2. 建议使用 Bcrypt加密算法 代替 MD5/SHA1
  3. Android Base64图片的解码
  4. 世界500强公司名单(2004年度)
  5. 亚像素级角点检测Opencv-cornerSubPix
  6. linux禁用触控板驱动程序,Ubuntu Linux下笔记本禁用触摸板的方法 - 51CTO.COM
  7. 《计算机网络》学习总结——概述 (帮助理解入门)
  8. 计算机表格最高分,excel表格怎样求最高分
  9. 用python将书中流程图扫描成美观的电子稿
  10. 以色列一公司称能复制特斯拉电池,可在 10 分钟内充满电