ARM指令和Thumb指令粗记录

VersionSDescriptionDateBy
V1CFirst Version2020-12-19AYZP

C―― Create,
A—— Add,
M—— Modify,
D—— Delete。

前言

不知今日如何碰到这个问题,但是碰上了,就整理记录下。

正文

在ARM的体系结构中,可以工作在三种不同的状态,一是ARM状态,二是Thumb状态及Thumb-2状态,三是调试状态。而ARM状态和Thumb状态可以直接通过某些指令直接切换,都是在运行程序,只不过指令长度不一样而已。

  • ARM状态:arm处理器工作于32位指令的状态,所有指令均为32位;
  • Thumb状态:arm执行16位指令的状态,即16位状态;
  • thumb-2状态:这个状态是ARM7版本的ARM处理器所具有的新的状态,新的thumb-2内核技术兼有16位及32位指令,实现了更高的性能,更有效的功耗及更少地占用内存。总的来说,感觉这个状态除了兼有arm和thumb的优点外,还在这两种状态上有所提升,优化;
  • 调试状态:处理器停机时进入调试状态。

也就是说:ARM状态,此时处理器执行32位的字对齐的ARM指令;Thumb状态,此时处理器执行16位的,半字对齐的THUMB指令。

ARM状态和Thumb状态切换程序:

  • 从ARM到Thumb: LDR R0,=lable+1 BX R0(状态将寄存器的最低位设置为1,BX指令、R0指令将进入thumb状态);
  • 从ARM到Thumb: LDR R0,=lable BX R0(寄存器最低位设置为0,BX指令、R0指令将进入arm状态)。
  • 当处理器进行异常处理时,则从异常向量地址开始执行,将自动进入ARM状态。

关于这个知识点还有几个注意点:

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

另外,具有Thumb-2技术的ARM处理器也无需再ARM状态和Thumb-2状态间进行切换了,因为thumb-2具有32位指令功能。

参考文章

[1] SuGuolin. ARM处理器的工作状态. cnblogs. 2016.04.
https://www.cnblogs.com/yygsj/p/5428500.html

[2] timequark. ARM指令和Thumb指令的区别. CSDN. 2009.11.
https://blog.csdn.net/itismine/article/details/4753701

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值