打印

Thumb 指令集与 ARM 指令集的区别

[复制链接]
6741|7
手机看帖
扫描二维码
随时随地手机跟帖
沙发
hbicecream| | 2010-10-11 16:19 | 只看该作者
ARM指令是32位的, Thumb 指令是16位的
Thumb 指令能完成ARM指令大部分的功能,使用 Thumb 指令可以节约存储空间,提高效率
ARM指令与处理器32位的处理能力相适应,能发挥ARM处理器全部的功能

如果不是特殊需要不建议ARM和Thumb 指令混用

使用特权

评论回复
板凳
IJK| | 2010-10-14 10:12 | 只看该作者
还有Thumb2指令,是现在流行的CortexM3内核用的,结合了16位Thumb 指令和32位ARM指令的优点,适合MCU的应用,现在很多流行的MCU(如STM32)就是基于Thumb2指令集

使用特权

评论回复
地板
dy6258| | 2010-12-7 19:21 | 只看该作者
[转自CSDN博客http://blog.csdn.net/itismine/archive/2009/11/01/4753701.aspx]:
Thumb 指令集与 ARM 指令集的区别
Thumb 指令集没有协处理器指令,信号量指令以及访问 CPSR 或 SPSR 的指令,没有乘加指令及 64 位乘法指令等,且指令的第二操作数受到限制;除了跳转指令 B 有条件执行功能外,其它指令均为无条件执行;大多数 Thumb 数据处理指令采用 2 地址格式.Thumb指令集与 ARM 指令的区别一般有如下几点:
      跳转指令
程序相对转移,特别是条件跳转与 ARM 代码下的跳转相比,在范围上有更多的限制,转向子程序是无条件的转移.
      数据处理指令
数据处理指令是对通用寄存器进行操作,在大多数情况下,操作的结果须放入其中一个操作数寄存器中,而不是第 3 个寄存器中.数据处理操作比 ARM 状态的更少,访问寄存器 R8~R15 受到一定限制.除 MOV 和 ADD 指令访问器 R8~R15 外,其它数据处理指令总是更新 CPSR 中的 ALU 状态标志.访问寄存器 R8~R15 的 Thumb 数据处理指令不能更新 CPSR 中的 ALU 状态标志.
      单寄存器加载和存储指令
在 Thumb 状态下,单寄存器加载和存储指令只能访问寄存器 R0~R7
      批量寄存器加载和存储指令
LDM 和 STM 指令可以将任何范围为 R0~R7 的寄存器子集加载或存储. PUSH 和 POP 指令使用堆栈指令 R13 作为基址实现满递减堆栈.除 R0~R7 外,PUSH 指令还可以存储链接寄存器 R14,并且 POP 指令可以加载程序指令PC

使用特权

评论回复
5
foliages| | 2010-12-7 23:02 | 只看该作者
恩 ,Thumb功能挺强大的

使用特权

评论回复
6
airwill| | 2010-12-8 20:18 | 只看该作者
相对于 arm, thumb 指令只是一套子集, 用较少的寄存器, 短的指令长度, 完成相同的功能, 也许能得到较少的代码空间, 但一定降低了程序效率.
不过 thumb2 在 thumb 上, 改进了效率

使用特权

评论回复
7
20070936| | 2010-12-9 18:33 | 只看该作者
看周立功ARM基础教程

使用特权

评论回复
8
熊盖赞NO1| | 2010-12-9 20:21 | 只看该作者
基本上书上都有讲的
lz没好好看书?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

7

帖子

1

粉丝