新闻中心

EEPW首页>嵌入式系统>设计应用> Thumb指令集之: Thumb指令应用

Thumb指令集之: Thumb指令应用

作者: 时间:2013-09-30 来源:网络 收藏

本文引用地址://m.amcfsurvey.com/article/257036.htm

11.9.2Thumb的特点

Thumb指令把32位的指令集的一个子集进行编码,成为一个16位的指令集。所以在16位的外部数据总线宽度下,在处理器上使用Thumb指令的性能要比使用指令性能更好;而在32位外部数据总线宽度下,使用Thumb指令的性能要比使用ARM指令的性能差。

16位的Thumb指令只用ARM指令一半的位数来实现同样的功能,所以Thumb指令比ARM指令语义内涵少,因而实现特定程序所需要的Thumb指令数比ARM指令多。一般情况下,Thumb代码所需要的空间为ARM代码的70%。

注意

代码密度是的主要优势。由于的设计是面向编译器的,而不是针对手写汇编的,所以推荐使用高级语言如C或C++语言来编程,然后用编译器生成Thumb指令的目标码。

下面的例子分别使用ARM指令和Thumb指令实现了同样的除法运算。虽然Thumb指令的实现使用了更多的指令,但是它所占的总的存储空间却比较少。

ARM代码:

MOVr0,#10

MOVr1,#4

MOVr3,#0

LOOP

SUBSr0,r0,r1

ADDGEr3,r3,#1

BGELOOP

ADDr2,r0,r1

Thumb代码:

MOVr0,#10

MOVr1,#4

MOVr3,#0

LOOP

ADDr3,#1

SUBr0,r1

BGELOOP

SUBr3,#1

ADDr2,r0,r1

上面的ARM和Thumb代码分别实现了同样的除法运算。程序中分别使用r0和r1作为输入寄存器分别存放被除数和除数,而r2和r3用来存放指令的执行结果,分别为除法的余数和商。例子中ARM指令所占的存储空间为7×4=28字节,而Thumb指令所占存储空间为8×2=16字节。

从上例中不难看出,虽然实现特定程序所需要的Thumb指令数比ARM指令多,但Thumb指令所占用的内存空间要小于ARM指令。

当程序在选择使用ARM指令或Thumb指令时,要注意参考以下Thumb指令的特点。

①Thumb代码所需空间为ARM代码的70%。

②Thumb代码使用的指令数比ARM代码多40%。

③使用16位的存储器,Thumb代码比ARM代码快40%。

④使用Thumb代码,外部存储器的功耗比ARM代码少30%。

因此,若性能更重要,则系统应使用32位存储器并运行ARM代码;如果成本及功耗更重要,则最好选择16位的Thumb代码。如果能在同一个工程中,将两者结合使用,会在两方面取得最好的结果:在高端的32位ARM系统可以使用Thumb代码实现特定的非关键程序,以节省功耗或降低对存储器的要求;低端的16位系统可以使用小规模的32位片上RAM运行ARM代码的关键程序,所有非关键程序使用片外Thumb代码。

c++相关文章:c++教程



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭