ARM 指令和 Thumb 指令

在 ARM 的体系结构之中,可以工作在 3 中不同的工作状态:

  1. ARM 状态:arm 处于 32 位指令状态

  2. Thumb 状态:arm 处于 16 位指令状态

    Thumb-2 状态: 是 ARM7 版本 ARM 处理器所具有的新的状态,新的 Thumb-2 内核技术兼有 16 位及 32 位指令,实现了更高的性能,更有效的功耗及更少地占用内存。总的来说,感觉这个状态除了兼有ARM和Thumb的优点外,还在这两种状态上有所提升,优化。

  3. 调试状态:处理器停机时进入调试状态

ARM 状态和 Thumb 状态可以直接通过某些命令进行切换。

ARM 状态和 Thumb 状态切换

从 ARM 到 Thumb:LDR R0,=lable+1 BX R0

从 Thumb 到 ARM:LDR R0,=lable BX R0

处理器进行异常处理时,从异常向量地址开始,自动进入 ARM 状态。

注意:

  • ARM 处理器复位后,开始执行代码时总是处于 ARM 状态;
  • Cortex-M3 只有 Thumb-2 状态和调试状态;
  • 因为 Thumb-2 具有 16/32 位指令功能,所以有了 Thumb-2 就无需 Thumb 了;
  • 因为 Thumb-2 具有 32 位指令功能,所以无需在 ARM 状态和 Thumb-2 状态之间切换了。

参考: