程序计数器(PC)在程序运行中的指向是 当前正在执行指令的前一条指令。具体来说,PC总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。这种指向关系是基于人们的一种习惯性约定,将“正在执行的指令”作为参考点,称之为当前第一条指令,因此PC总是指向第三条指令。
在ARM状态下,由于每条指令为4字节长,PC的值总是指向当前程序执行位置加上8字节的地址,即PC值 = 当前程序执行位置 + 8。而在Thumb状态下,每条指令为2字节长,因此PC = 当前执行位置 + 4。
总结来说,PC指针总是指向下一条将要被执行的指令的地址,而不是当前正在执行的指令的地址。这种设计确保了程序能够按顺序执行,并且可以方便地跟踪和控制指令的执行流程。