收藏官网首页
查看: 9047|回复: 0

ARM Thumb Thumb-2 Thumb-2EE指令集区别比较

321

主题

1054

帖子

4501

积分

论坛元老

Rank: 8Rank: 8

积分
4501
QQ
发表于 2017-4-17 08:38:31 | 显示全部楼层 |阅读模式
免费使用STM32、APP自动代码生成工具
概念

Thumb 指令

为以 Thumb 状态运行的、基于 ARM 体系结构的处理器的操作进行编码的一个半字或两个半字。 Thumb 指令必须为半字对齐。


Thumb 状态

执行 Thumb 指令的处理器工作在 Thumb 状态。 当直接通过 BX、BLX 等指令完成时,处理器可切换到 ARM 状态(以识别 ARM 指令)。


Thumb-2 指令

Thumb-2 是 Thumb 指令集的一项主要增强功能,并且由 ARMv6T2 和 ARMv7M体系结构定义。 Thumb-2 提供了几乎与 ARM 指令集完全一样的功能。 它兼有16 位和 32 位指令,并可检索与 ARM 类似的性能,但其代码密度与 Thumb 代码类似。

Thumb-2EE 指令

Thumb-2 执行环境 (Thumb-2EE) 由 ARMv7 体系结构定义。 Thumb-2EE 指令集基于 Thumb-2,前者进行了一些更改和添加,使得动态生成的代码具有更好的目标,也就是说,就在执行之前或在执行过程中即可在该设备上编译代码。

ThumbEE 状态

执行 Thumb-2EE 指令的处理器正在以 ThumbEE 状态运行。 在此状态下,该指令集几乎与 Thumb 指令集相同。 不过,有些指令已经修改了行为,有些原有的指令已不再提供,另外还新添了一些指令。


说明
  • 在ARM体系结构中,ARM指令集中的指令是32位的指令,其执行效率非常高。
  • 对于存储系统数据总线为16位的应用系统,ARM体系提供了Thumb指令集。
  • Thumb指令集是对ARM指令集的一个子集重新编码得到的,指令长度为16位。
  • 通常在处理器执行ARM程式时,称处理器处于ARM状态;当处理器执行Thumb程式时,称处理器处于Thumb状态。
  • Thumb指令集并没有改动ARM体系地层的程式设计模型,只是在该模型上加上了一些限制条件。
  • Thumb指令集中的数据处理指令的操作数仍然为32位,指令寻址地址也是32位的。

使用

通常,Thumb程式比ARM程式更加紧凑,而且对于内存为8位或16位的系统,使用Thumb程式效率更高。不过,在下面一些场合下,程式必须运行在ARM状态,这时就需要混合使用ARM和Thumb程式。

(1)强调速度的场合,应该使用ARM程式;
(2)有些功能只能由ARM程式完成。如:使用或禁止异常中断;
(3)当处理器进入异常中断处理程式时,程式状态转换到ARM状态,即在异常中断处理程式入口的一些指令是ARM指令,然后根据需要程式能转换到Thumb状态,在异常中断程式返回前,程式再转换到ARM状态。
(4)ARM处理器总是从ARM状态开始执行。因而,如果要在调试器中运行Thumb程式,必须为该Thumb程式添加一个ARM程式头,然后再转换到Thumb状态,执行Thumb程式。



本文来自: http://www.myir-tech.com/resource/504.asp


1、机智云QQ群:G1群:104975951 G2群:491509598 G3群:287087942
机智云爱好者-APP开发群: 599735135
QQ群目前非常活跃,欢迎大家参与进来,交流,讨论,答疑,解惑~~
2、机智云微信公众号: 机智云 gizwits、 机智云智能宠物屋go-iot
关注机智云Gizwits官方公众号随时掌握最新资讯和活动信息
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表