ARM状态和THUMB状态

ARM处理器可以在ARM状态执行32位指令和Thumb状态执行16位指令。Thumb-2状态结合了两者的优点,提供32位指令功能,优化了性能和功耗。ARM状态和Thumb状态之间的切换通过特定的BX指令完成。Cortex-M3处理器仅支持Thumb-2状态和调试状态,不再需要在状态间切换。异常处理会自动进入ARM状态。ARM的M系列主要使用Thumb指令,而ARM9和A系列则主要使用ARM指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ARM的体系结构中,可以工作在三种不同的状态,

一是ARM状态

  • 此时处理器执行32位的字对齐的ARM指令
  • arm处理器工作于32位指令的状态,所有指令均为32位

二是Thumb状态

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

三是调试状态。

  • 处理器停机时进入调试状态。

状态理解

  • ARM核就好比一个高中学校,那种包含普通高中和职业高中的。普通高中就相当于ARM状态,职业高中就相当于Thumb状态。

  • 而ARM状态和Thumb状态可以直接通过某些指令直接切换

    • 由arm状态切换到thumb
      • 状态将寄存器的最低位设置为1
      • BX指令:R0[0]=1,则执行BX
      • R0指令将进入thumb状态
    • 由thumb状态切换到ARM状态
      • 寄存器最低位设置为0
      • BX指令:R0[0]=0,则执行BX
      • R0指令将进入arm状态

状态使用

  • ARM的M系列主要用Thumb指令
  • ARM9和A系列主要用ARM指令
  • S3C2440.S启动代码中根本就没用Thumb指令。

知识储备

  • 当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。
  • Cortex-M3只有Thumb-2状态和调试状态。
  • 具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。

总结

  • arm状态与Thumb状态的本质区别就是指令的位数不同,
  • arm是32位的指令状态,
  • 而thumb是16位 的指令状态,
  • 而thumb-2状态是arm状态和thumb状态的结合和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值