ARM 程序计数器 R15(PC)

本文详细介绍了ARM处理器中的R15寄存器,作为程序计数器(PC)的角色。在ARM9正常运行时,PC指向的是即将执行的指令地址。ARM7的3级流水线(取指、译码、执行)导致PC值在执行指令时比实际地址提前8个字节。同时,介绍了ARM存储器格式,包括最大寻址空间和字节线性组合方式。
摘要由CSDN通过智能技术生成

寄存器 R15 为程序计数器(PC),它指向 正在取指的地址。可以认为它是一个通用寄存器,但是对于它的使用有许多与指令相关的限制或特殊情况。

ARM9 正常操作时,从 R15 读取的值是处理器 正在取指的地址,即:

R15(PC)= 当前正在执行指令的地址 + 8

注:

  1. 8 是指 8 个字节,是两条 ARM 指令的长度。
  2. ARM 是 3 级流水线:取指,译码,执行。

由于 ARM7 指令总是以字为单位,所以 R15 寄存器的最低两位总是为 0。
R15 值的改变将引起程序执行顺序的改变。
向 R15 内写入一个值,程序将跳转到以 R15 值为地址的程序执行


下面讲一下上面代码段中的公式怎么推出来的:

ARM7 架构采用了一个 3 段的流水线:

  1. 取指:将指令从内存中取出来。
  2. 译码:操作码和操作数被译码以决定执行什么功能。
  3. 执行:执行已译码的指令。

在这里插入图片描述
由上述三级指令流程我们可以很容易得出下面这幅流程图:
从第三列我们可以看出来 PC 指向的正在取指的指令是第三条指令,其地址是 ox00000008,而正在执行的指令是第一条指令,其地址是 0x00000000。很容易看出相差 8。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值