周立功 ARM体系结构()优秀培训书.pptVIP

  • 2
  • 0
  • 约2.25万字
  • 约 90页
  • 2017-02-08 发布于江苏
  • 举报
3.7 内部寄存器 读R15的限制 正常操作时,从R15读取的值是处理器正在取指的地址,即当前正在执行指令的地址加上8个字节(两条ARM指令的长度)。由于ARM指令总是以字为单位,所以R15寄存器的最低两位总是为0。 LDR R0,PC ??? ??? PC PC-4 PC-8 正在执行 正在译码 正在取指 流水线状态 地址 程序代码 3.7 内部寄存器 读R15的限制 当使用STR或STM指令保存R15时,会有一个例外。这些指令可能将当前指令地址加8字节或加12字节保存(将来可能还有其它数字)。偏移量是8还是12取决于具体的ARM芯片,但是对于一个确定的芯片,这个值是一个常量。 所以最好避免使用STR和STM指令来保存R15,如果很难做到,那么应当在程序中计算出该芯片的偏移量。 3.7 内部寄存器 读R15的限制 计算偏移量程序代码: SUB R1,PC,#4 ;R1=下面STR指令的地址 STR PC,[R0] ;保存STR指令地址+偏移量 LDR R0,[R0] ;然后重装 SUB R0,R0,R1 ;计算偏移量 3.7 内部寄存器 写R15的限制 正常操作时,写入R15 的值被当作一个指令地址,程序从这个地址处继续执行(相当于执行一次无条件跳转)。 3.7 内部寄存器 写R15的限制

文档评论(0)

1亿VIP精品文档

相关文档