您的位置 首页 FPGA

ARM与Thumb状况切换及其代码剖析

Thumb指令在相比于ARM指令具有更高的代码密度,但是在运行效率上略低于ARM指令集,而且Thumb只是ARM指令集的一个子集。所有的ARM指令都是可…

Thumb指令在比较于ARM指令具有更高的代码密度,但是在运转功率上略低于ARM指令集,并且Thumb仅仅ARM指令集的一个子集。一切的ARM指令都是能够条件履行的,而Thumb指令仅有一条指令具备条件履行功用。所以许多应用程序需求两者的混合编程,因而存在ARM与Thumb状况之间彼此切换,并且彼此之间的状况切换的开支简直为零。

ARM与Thumb之间的状况切换经过专用的搬运交流指令BX来完成。BX指令以通用寄存器(R0~R15)为操作数,经过复制Rn到PC完成肯定跳转。BX使用Rn寄存器中意图地址值的最终一位判别跳转后的状况。
下面是一段直接进行状况切换的代码:
CODE32 ;程序从ARM状况开端
ADR r0, ThumbProg+1 ;跳转到ThumbProg
BX r0 ;程序切换到Thumb状况
CODE16 ;Code16指示编译器后边为Thumb指令
ThumbProg
MOV r2, #2
MOV r3, #3
ADD r2, r2, r3
ADR r0, ARMProg
BX r0 ;跳转到ARMProg,程序切换到ARM状况
CODE32 ;code32指示编译器后边为ARM指令
ARMProg
MOV r4, #4
MOV r5, #5
ADD r4, r4, r5

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/fpga/277325.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部