本文参考至ARM的官方手册
ARM® Architecture Reference Manual
ARMv7-A and ARMv7-R edition

1.ARM的基本设定

ARMv7 采用的是32位架构

  • Byte: 8 bits
  • Halfword: 16bits(2 byte)
  • Word: 32 bits(4 byte)

ARM core提供:

  • ARM指令集(32 bits)
  • Thumb 指令集(16bits),thumb指令集是由于原来内存很贵,为了节省memory就用16bits方式来开发,现在已经基本不这么用了
  • Thumb2 指令集(16&32bits),M系列的可能还有用thumb2模式来开发的,还是为了节约成本

2.ARM处理器的工作模式

1.有哪些模式

在官方手册上看到,有这么一些模式,但实际上有些模式是在特定情况下才能存在的,比如Monitor、Hyp模式,我们这里只选择基本工作模式来分析:
ARMv7架构学习
同时我们能看到有一栏是权限栏(privilege level),这些PL0、PL1、PL2的定义是:
ARMv7架构学习
所以我们可以总结下ARM的工作模式
ARMv7架构学习
ARMv7架构学习

2.设置这些模式的原因

设置这些模式的原因还是为了能够适配软件操作系统,因为软件操作系统提出了 userspace和kernelspace,因此硬件的设计考虑了软件的需要。

3.ARM寄存器介绍

ARMv7一共有37个寄存器,如下图所示:
ARMv7架构学习
user模式下一共有r0~r15加上cpsr,17个寄存器,FIQ模式下灰色部分是自己的,即r8 ~ r14和spsr寄存器是自己的,其他的是usermode的,以此类推;

1.通用寄存器

ARMv7架构学习
r0 ~ r12是通用寄存器,就是计算的时候会用到,没有特殊的含义

2.SP/LR/PC特殊寄存器

SP是堆栈指针寄存器,用于保护现场,存储上下文的信息
LR是返回寄存器,存储一些返回地址的信息
PC是程序运行计数器,往pc里写值,将会导致跳转到该地址

3.CPSR/SPSR寄存器

CPSR是当前程序的状态寄存器,里面存储着很多信息,包括当前的指令模式(是thumb还是arm),以及当前的处理器模式(user/fiq/…)

ARMv7架构学习
ARMv7架构学习
SPSR全程是 saved program status reg,它的目的就是作为CPSR的一份备份,那备份这个有什么用呢,文档里说了就是为了一旦异常发生,能够用到这个备份的值
ARMv7架构学习

4.常用汇编指令

相关文章:

  • 2021-10-11
  • 2021-12-28
  • 2021-11-19
  • 2021-04-04
  • 2021-09-21
  • 2021-11-26
  • 2021-11-16
  • 2021-09-12
猜你喜欢
  • 2021-07-22
  • 2022-12-23
  • 2021-06-25
  • 2022-12-23
  • 2021-12-02
  • 2021-08-05
  • 2021-05-27
相关资源
相似解决方案