打印

ARM指令与Thumb指令有什么区别啊

[复制链接]
488|8
手机看帖
扫描二维码
随时随地手机跟帖
沙发
zhangmangui| | 2017-5-23 22:41 | 只看该作者
不知道啊   

使用特权

评论回复
板凳
spark周| | 2017-5-24 22:18 | 只看该作者

Thumb 指令可以看作是 ARM 指令压缩形式的子集,

使用特权

评论回复
地板
dengdc| | 2017-5-24 22:20 | 只看该作者
是针对代码密度的问题而提出的,它具有 16 位的代码密度但是它不如ARM指令的效率高

使用特权

评论回复
5
dengdc| | 2017-5-24 22:30 | 只看该作者
Thumb 不是一个完整的体系结构,不能指望处理只执行Thumb 指令而不支持 ARM 指令集

使用特权

评论回复
6
jiajs| | 2017-5-24 22:31 | 只看该作者

指令只需要支持通用功能,必要时可以借助于完善的 ARM 指令集

使用特权

评论回复
7
jiajs| | 2017-5-24 22:33 | 只看该作者
比如,所有异常自动进入 ARM 状态.在编写 Thumb 指令时,先要使用伪指令 CODE16 声明,而且在 ARM 指令中要使用 BX指令跳转到 Thumb 指令,以切换处理器状态.编写 ARM 指令时,则可使用伪指令 CODE32声明.

使用特权

评论回复
8
spark周| | 2017-5-24 22:36 | 只看该作者

网上收集的:.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

使用特权

评论回复
9
jiaxw|  楼主 | 2017-5-24 22:39 | 只看该作者
嗯,预料中的结果,先结贴吧,多谢大家啦

使用特权

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

本版积分规则

825

主题

9762

帖子

4

粉丝