ARMv7 寄存器详解大全( 三 )

R15寄存器:R15又名PC , 即程序寄存器 , 主要用于存放CPU取指的地址 , 记住是取指地址 , 不是当前运行地址 。 目前 , ARM是三级流水线 , 因此 , 当CPU在执行S指令的时候 , PC指向的是S+2指令 。 但是当手动向PC赋值 , 则是让CPU跳转到赋入的值 所代表的地址去运行 。

注:通常PC指针指向的地址都是4字节对齐 , 即地址的[1:0
位总是为0 , 这也是我们说的ARM模式 。 现在很多CPU都支持混合编码即同时支持ARM指令和Thumb指令 , 因此为了区分Thumb指令 , ARM将[0
位设置成1 , 即地址最低位如果是1 , 表示当前指令是Thumb指令 , 否则为ARM指令 。

Thumb(16)指令占用的空间通常比ARM指令少 , 但是ARM指令运行的效率通常要比Thumb更高 , Thumb模式到ARM模式可以通过带X的跳转进行切换 , 如BLX BX跳转指令(Thumb分为Thumb16和Thumb32) 。

上面说了寄存器的情况 , 下面说说在不同模式下 , 程序返回时 , CPU应该运行的地址:

点击(此处)折叠或打开

    推荐阅读