04_ARM汇编自学笔记模型之ARM 状态下的寄存器组织

ARM 状态下的寄存器组织

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

─ 未分组寄存器R0~R7:未分组寄存器都指向同一个物理寄存器

─ 分组寄存器R8~R14:每一次所访问的物理寄存器与处理器当前的运行模式有关,对于R8~R12来说,每个寄存器对应两个不同的物理寄存器,R8_f i q~R12_f i q;当使用f i q模式时,访问寄存器,当使用除f i q模式以外的其他模式时,访问寄存器R8_usr~R12_usr。对于R13、R14来说,每个寄存器对应6个不同的物理寄存器,其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式

─ 程序计数器PC(R15):在ARM状态下,PC的0和1位是0,在Thumb状态下,PC的0位是0。PC 总是指向当前指令的下两条指令的地址,即 PC 的值为当前指令的地址值加 8 个字节。

寄存器R16用作CPSR(CurrentProgram Status Register,当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。

寄存器R13在ARM指令中常用作堆栈指针

R14也称作子程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15(程序计数器PC)的备份。保存子程序的返回地址。当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。

访问THUMB状态下的高位寄存器(Hi-regi st ers):

在Thumb状态下,高位寄存器R8~R15并不是标准寄存器集的一部分,但可使用汇编语言程序受限制的访问这些寄存器,将其用作快速的暂存器。使用带特殊变量的MOV指令,数据可以在低位寄存器和高位寄存器之间进行传送;高位寄存器的值可以使用CMP和ADD指令进行比较或加上低位寄存器中的值。


Thumb状态下的寄存器组织与ARM状态下的寄存器组织的关系:

─ Thumb状态下和ARM状态下的R0~R7是相同的。

─ Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。

─ Thumb状态下的SP对应于ARM状态下的R13。

─ Thumb状态下的LR对应于ARM状态下的R14。

─ Thumb状态下的程序计数器对应于ARM状态下R15


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值