Thumb指令

Thumb指令

基本介绍

  Thumb是ARM体系结构中一种16位的指令集。
  从ARMv4T之后的ARM处理器有一种16-bit指令模式,叫做Thumb,也许跟每个条件式执行指令均耗用4位元的情形有关。Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出,具有16bit的代码密度。Thumb指令体系并不完整,只支持通用功能,必要时仍需要使用ARM指令,如进入异常时。其指令的格式与使用方式与ARM指令集类似,而且使用并不频繁,Thumb指令集作一般了解。
  在Thumb模式下,较小的指令码有更少的功能性。例如,只有分支可以是条件式的,且许多指令码无法存取所有CPU的暂存器。然而,较短的指令码提供整体更佳的编码密度,即使有些运算需要更多的指令。特别在内存埠或总线宽度限制在32以下的情形时,更短的Thumb 指令码能更有效地使用有限的内存带宽,因而提供比32位元程式码更佳的效能。典型的嵌入式硬件仅具有较小的32-bit datapath寻址范围以及其他更窄的16 bits寻址。
  Thumb指令在分支指令中一部分可以在 ARM指令集之间切换,Thumb的数据处理指令都能映射到相应的
  ARM数据处理指令中。但是单寄存器和多寄存器的加载和存储指令是不能相互交换的。
  最早应用Thumb 技术的处理器是 ARM7TDMI系列的内核。所有 ARM9 和后来的家族,包括 XScale 都纳入了 Thumb 技术。
  在编写Thumb指令时,先要使用伪指令CODE16声明,编写ARM指令时,则可使用CODE32伪指令声明。
  1、Thumb指令集没有协处理器指令、信号量指令、以及访问CPSR或SPSR的指令,没有乘加指令及64位乘法指令等,且指令的第二操作数受到限制;
  2、大多数的Thumb数据处理指令采用2地址格式;
  3、除了跳转指令B有条件执行功能之外,其他指令均为无条件执行,而且分支指令的跳转范围有更多限制;
  4、数据处理指令是对通用寄存器进行操作,在大多数情况下,操作的结果放入其中一个操作数寄存器中,而不是放入第3个寄存器中;访问寄存器R8~R15受到一定的限制,除MOV、ADD指令访问R8~R15外,其他数据处理指令总是更新CPSR中ALU状态标志,访问寄存器R8~R15的Thumb数据处理指令不能更新CPSR中的ALU状态指示。
  5、Thumb状态下,单寄存器加载和存储指令只能访问寄存器R0~R7;
  6、LDM、STM指令可以将任何范围为R0~R7的寄存器子集加载或存储;
  7、PUSH、POP指令使用栈寄存器R13作为基址堆栈操作。

Thumb指令与ARM指令的区别

  1.分支指令:跳转的范围小,除B指令外,都是无条件跳转.
  2.数据处理指令:Thumb指令只有2个操作数,而ARM指令是3个操作数.
  3.单寄存器加载存储指令:Thumb指令只能访问R0~R7.
  4.多寄存器加载存储指令:Thumb指令只能访问R0~R7的子集.
  5.Thumb特有指令:PUSH和POP作用于R13.
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值