ARM汇编的37个通用寄存器

37个通用寄存器示意图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gxs2q6vS-1635731778473)(en-resource://database/963:1)]

1.每种模式下看到的寄存器不一样 每种模式下最多看到18个寄存器 其他的寄存器名字相同但是当前模式看不见。
2.影子寄存器。如图的r14在arm中有6个r14(也叫sp)的寄存器,每种特定处理器模式下只有一个r14可以被看到,这种设计叫影子寄存器(banked register)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-djGVeYNm-1635731778480)(en-resource://database/962:1)]

  • ARM共有37个寄存器,都是32位长度
  • 37个寄存器中30个为“通用”型,1个固定用作PC,一个固定用作CPSR,5个固定用作5种异常模式下的SPSR。

CPSR 程序状态寄存器

重要的 判断 程序状态的 具体的32位

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UZ7RDR6c-1635731778486)(en-resource://database/964:1)]

  • 条件位:
    N = Negative result from ALU
    Z = Zero result from ALU
    C = ALU operation Carried out
    V = ALU operation oVerflowed
  • Q 位:
    仅ARM 5TE/J架构支持
    指示饱和状态
  • J 位
    仅ARM 5TE/J架构支持
  • J = 1: 处理器处于Jazelle状态
  • 中断禁止位:
    I = 1: 禁止 IRQ.
    F = 1: 禁止 FIQ.
  • T Bit
    仅ARM xT架构支持
    T = 0: 处理器处于 ARM 状态
    T = 1: 处理器处于 Thumb 状态
  • Mode位:
    处理器模式位 - 对应七种工作模式

补充说明:

  • CPSR中各个bit位表明了CPU的某些状态信息,这些信息非常重要,和后面学到的汇编指令息息相关(譬如BLE指令中的E就和CPSR中的Z标志位有关)
  • CPSR中的I、F位和开中断、关中断有关
  • CPSR中的mode位(bit4~bit0共5位)决定了CPU的工作模式,在uboot代码中会使用汇编进行设置。

PC(r15只能是r15) 程序控制寄存器

  • PC(Program control register)为程序指针,PC指向哪里,CPU就会执行哪条指令(所以程序跳转时就是把目标地址代码放到PC中)
  • 整个CPU中只有一个PC(CPSR也只有一个,但SPSR有5个)。

SPSR:程序状态保存寄存器

SPSR用于保存CPSR的状态,以便异常返回后恢复异常发生时的工作状态。
SPSR用来进行异常处理,有以下功能:

  • 保存ALU中的当前操作信息。
  • 控制允许和禁止中断。
  • 设置处理器的运行模式。
上一篇:1082:dense_rank()和group by结合


下一篇:tab切换适用于H5和PC不借助组件