arm体系结构:寄存器

前言

本文主要介绍ARM RISC 32位体系结构下的相关知识,主要理解寄存器和相关指令,要读懂汇编。

精简指令集RISC

reduced instruction set computer

  • 精简指令集:保留最基本的,去掉复杂、使用频度不高的指令
  • 复杂指令可通过对简单基本的指令组合而成
  • 每条指令的长度都是相同的,大部分指令可以在一个机器周期里完成
  • 采用多级指令流水线结构,处理器在同一时间内可执行多条指令
  • 采用加载(Load)、存储(Store)结构,统一存储器访问方式,只允许Load和Store指令执行存储器操作,其余指令均对寄存器操作。
  • 大大增加通用寄存器的数量,ALU只与寄存器文件直接连接。
  • 采用高速缓存(cache)结构

RISC架构的ARM处理器的特点

低功耗、低成本、高性能

  • 固定长度的指令格式,指令归整、简单、基 本寻址方式有2~3种;
  • 使用单周期指令,便于流水线操作执行;
  • 大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指
    令的执行效率。

ARM处理器的工作模式

usr:ARM处理器正常的程序执行状态
sys:运行具有特权的操作系统任务
fiq:用于高速数据传输或通道处理
irq:用于通用的中断处理
svc:操作系统使用的保护模式
abt:用于虚拟存储及存储保护
und:当出现未定义指令终止时进入该模式

除了用户模式之外的其他6种处理器模式称为特权模式;
特权模式中,除系统模式外,其他5种模式又称为异常模式;

ARM处理器的指令长度及数据类型

ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型;
字需要4字节对齐(地址的低两位为0);
半字需要2字节对齐(地址的最低位为0);
单字节的没有这个问题;

寄存器

寄存器是CPU中的高速存储单元,CPU可以读写的最快的存储器,用来暂存指令、数据和地址。

  • ARM 处理器共有37个寄存器,被分为若干个组,这些寄存器包括:

    • 31个通用寄存器,包括程序计数器(PC 指针),均为32位的寄存器;
    • 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位。
  • 这些寄存器不能被同时访问,具体哪些寄存器是可编程访问的,取决微处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC、一个或两个状态寄存器都是可访问的。

  • 通用寄存器:通用寄存器包括R0~R15,可以分为三类:

    • 未分组寄存器R0~R7
      在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。
    • 分组寄存器R8~R14
    • 程序计数器PC(R15)
  • 堆栈指针R13
    R13在ARM指令中常用作堆栈指针;
    由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,
    当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。

  • 链接寄存器LR,R14
    Link Register,链接寄存器,存储着函数的返回地址
    R14也称作子程序连接寄存器或连接寄存器LR。
    当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。即保存调用跳转指令 bl 指令的下一条指令的内存地址.
    在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。

  • 程序计数器PC(R15),Program Counter
    ARM状态下,位[1:0]为0,位[31:2]用于保存PC;
    保存当前执行的指令的地址。(由操作系统决定其值,不能改写)。
    在这里插入图片描述

程序状态寄存器CPSR/SPSR

  • CPSR (Current Program Status Register)和其他寄存器不一样,其他寄存器是用来存放数据的,都是整个寄存器具有一个含义;而 CPSR 寄存器是按位起作用的,即,每一位都有专门的含义,记录特定的信息;SPSR (Saved Program Status Register),异常状态下使用;
  • 寄存器R16用作CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。
  • 每一种异常模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。
  • CPSR 的 低8位(包括 I、F、T 和 M[4:0])称为控制位,程序无法修改,除非 CPU 运行于 特权模式 下,程序才能修改控制位。

程序状态寄存器格式如下:
在这里插入图片描述
标志位含义:
在这里插入图片描述

《ARM体系结构与编程》
ARM体系结构与编程

猜你喜欢

转载自blog.csdn.net/u014099894/article/details/132470281