首页 > 编程知识 正文

arm指令集和thumb指令集的联系,thumb指令集和arm指令集相比有哪些优势

时间:2023-05-04 06:46:57 阅读:158192 作者:3976

1、在Thumb指令集信源的ARM的RISC架构的发展中,已经给出了一种低功耗、小尺寸、高性能的方案。 然后,为了解决代码长度问题,ARM架构开发了名为Thumb指令集的新指令集,称为t变种。

Thumb是ARM体系结构扩展(Thumb不是完整的体系结构,处理器只执行Thumb指令集,不支持ARM指令集这是从标准的32位ARM指令集中提取的36条指令格式,重组16位的操作码。 这带来了很高的代码密度。 例如,可以在1K的存储区域中放置32条ARM指令,可以放置64条Thumb指令,所以Thunb指令的代码密度很高。

2.Thumb指令集与ARM指令的时间复杂度和空间复杂度的比较在ARM处理器中,核心支持32比特的ARM指令和16比特的thumb指令。

当用户使用c程序处理APP语句时,如果将其编译为Thumb指令,则Thumb代码将使用比ARM代码多约30%~40%的指令,而最终生成的目标代码所需的存储空间约为ARM代码的60 %-40 % 因为各命令所占的区域是ARM命令的一半。

使用32位内存,ARM代码比Thumb代码快约40%;使用16位内存,Thumb代码比ARM指令快约40%~50%。 具体地说,在存储器为32位情况下,ARM的性能更好,但由于编译相同代码的结果,Thumb指令比ARM多,所以Thumb指令在32位块存储器预取上仍花费指令周期即使代码比ARM多,16位内存也能提高Thumb的性能。 这是因为Thumb在一条指令的预取中需要一个周期,在ARM指令中需要两个周期。

此外,在16位内存中,Thumb的性能下降了,这是因为数据去除和特殊的堆栈操作,即使在Thumb中,堆栈操作也是32位操作,在16位内存架构中,性能也会下降。 一个改进措施是提供32位内存来放置堆栈。 这种情况下的性能提高到了32位内存架构的水平。 主要区别在于使用的整数(32位)全局数据仍存储在16位存储器中。

与ARM代码相比,使用Thumb代码可减少约30%的内存功耗。

3、Thumb指令集和ARM指令集的混合编程将两者结合使用,可以充分发挥各自的优点,取得更好的效果。 Thumb具有较高的代码密度和狭窄的存储性能,广泛应用于许多系统。 但是,在许多情况下,必须使用ARM命令是因为以下原因:

ARM处理器的特定功能是http://www.Sina.com(不能直接访问SPSR和SPSR,在用MSR和MRS实现之前必须切换到ARM状态)、http://www.Sina.com

发生异常时,处理器自动进入ARM状态。 即,异常中断处理程序入口的几个命令是ARM命令(ARM程序头ARMassemblerheader ),之后根据需要将程序切换为Thumb状态,在异常中断处理程序返回之前进行程序如果异常处理程序需要使用Thumb命令,则必须使用公共命令。

ARM处理器始终从ARM状态运行。 要在调试器中运行Thumb程序,必须将ARM头添加到Thumb程序中,然后切换到Thumb状态并调用该Thumb程序。

基于以上原因,即使需要用Thumb代码实现程序,也必须在ARM-Thumb互连(ARM-Thumbinterworking )中进入Thumb状态。 ARM-Thumb交错是一种连接汇编语言和C/C语言的ARM和Thumb代码的方法,用于在两种状态(ARM和Thumb状态)之间切换。 在进行这种切换时,有时会使用称为Veneer的其他代码。 AAPCS定义了ARM和Thumb过程调用的标准。

ref :

3359 www.Sohu.com/a/339622340 _ 100281310

33559 www.21ic.com/app/MCU/201812/780644.htm

33558 www.elecfans.com/emb/574929.html

33559 www.21ic.com/embed/jiao cheng/jichu/201806/61024.html

33559 www.Xue buyuan.com/1257101.html

3359 www.cn blogs.com/FX 427103/p/3968243.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。