ARM 程序计数器的显着特征

USC*_*USC 3 arm intel cpu-architecture

ARM的R15和普通PC的CPU有什么区别?它们都只是程序计数器。有什么不同?

aus*_*len 5

ARM 的 PC 更类似于带有一些限制的常规寄存器,而不是 x86 的 IP 类似于常规寄存器。

考虑到一般 PC 是基于 Intel x86 的 CPU,在 x86 的情况下,您无法直接操作 PC(指令指针),但它会通过提供的控制流指令隐式更新。

在 ARM 历史上的情况下,程序计数器 (PC) 映射为索引 15(第 16 个寄存器)处的寄存器,可以通过算术指令直接操作。例如,您可以将 16 添加到 PC,这将改变指令流的流程,类似于 16 字节向前跳转指令。

  • @USC 添加到这个非常好的答案,它简化了指令集(因为跳转只是对神奇的第 15 个寄存器的“ADD”,而不是专用于此目的的指令)。还有两件事让“r15”变得有趣。它总是比您期望的位置提前 2 条指令(最早的 ARM 内核的流水线设计的遗产),并且它的底部两位是特殊的。由于 ARM 指令自然与 4 字节边界对齐,因此底部 2 位始终为零;因此借用了“r15”的位 0 来指示处理器是在 Thumb 还是 ARM 模式下执行。 (3认同)