ARM 寄存器学习:(一)arm多种模式下得寄存器

一.ARM7种状态以及每种状态的寄存器:        

        ARM 处理器共有 7 种不同的处理器模式,在每一种处理器模式中可见的寄存器包括 15 个通用寄存器( R0~R14)、一个或两个(User和Sys不是异常模式,没有spsr寄存器)状态寄存器(cpsr和spsr)、程序计数器( PC )。

从上图可以看到,每一种CPU模式都有15个通用寄存器(r0-r15),只是有一些是各种共用的,有一些是私有的,这里请大家记清楚,这对于cpu各种模式切换很重要,这是切换模式需要保存上下文的根本原因。

mode description restriction
User Mode 运行用户程序,非特权模式 ,无法处理异常,除非异常,否则无法改变当前模式 对系统资源的访问进行限制(外设以及memory)
SVC Mode 用于系统管理,比如系统下的资源访问,以及OS的调度管理,可以通过软件触发,特权模式 ,执行SVC指令可以进入到本异常,复位之后进入该模式 ,(正常行为,软件触发到
system Mode 与用户模式共享所有寄存器,特权模式,不能通过异常进入,(正常行为,软件触发
Abort Mode Data Abort或者Prefetch Abort,前者是数据访问出错,后面是取指令错误,特权模式,(异常行为,硬件检测到
Undefined Mode 指令相关的异常处理,例如执行到未定义的指令,特权模式,(异常行为,硬件检测到
FIQ Mode 特权模式,处理快速中断,(正常行为,硬件触发到
IRQ Mode 特权模式,处理普通终端,(正常行为,硬件触发到

二.通用寄存器介绍:

通用目的寄存器R0-R7:低组寄存器,32bit,16位thumb以及32位的thumb-2指令均可以访问

  • R0-R3一般作为参数传递,如果参数再多,则通过压栈的方式传递

  • R0、R1还会作为返回值进行传递,如果是32位则是R0,64位则会用R0-R1

通用目的寄存器R8-R12:高组寄存器,32bit,较少的16位thumb指令可以访问,一般是 thumb-2指令访问。
R11一般用作FP指针,保存栈帧(在加上编译选项时 ,见上篇文章,下文SP、LR同理ARM学习 
栈指针R13(SP) 指示当前栈所指位置。
链接寄存器R14(LR) 保存程序返回地址。
程序计数器R15(PC) 程序运行的当前位置。

下一章会详细介绍SP.FP.LR.PC

相关推荐

  1. ARMv8系统寄存器-0

    2024-03-18 20:30:05       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-18 20:30:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-18 20:30:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-18 20:30:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-18 20:30:05       20 阅读

热门阅读

  1. 蓝桥杯算法

    2024-03-18 20:30:05       18 阅读
  2. PHP过滤Emoji表情和特殊符号的方法

    2024-03-18 20:30:05       16 阅读
  3. 基于docker commit和Dockerfile为镜像添加ssh服务

    2024-03-18 20:30:05       21 阅读
  4. 蚓链与数字化供应链的融合 带给新零售新福音

    2024-03-18 20:30:05       23 阅读
  5. C语言经典面试题目(十一)

    2024-03-18 20:30:05       22 阅读
  6. 什么是web workers?使用场景?

    2024-03-18 20:30:05       17 阅读