程序计数器PC的bits[1:0]为什么是0?

实际上,根据处理器所处状态是ARM状态,还是Thumb状态,分两种情况:

  1. 对于ARM状态
    因为ARM指令集是字对齐的(4byte),当处理器处在ARM状态下时,指令的地址也应该是形如0x0, 0x4, 0x8, 0xC... 这样4的倍数。而PC中存放的是下一条指令的地址,所以PC的内容也必须是4的倍数,从而PC[1:0]必须是0。

  2. 对于Thumb状态
    类似于处于ARM状态,Thumb指令集是半字对齐的(2byte),处理器处于Thumb状态时,地址是2的倍数。因此PC[0]必须是0。

原文地址:https://www.cnblogs.com/fortunely/p/15452101.html