<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM與Thumb狀態(tài)切換及其代碼分析

          ARM與Thumb狀態(tài)切換及其代碼分析

          作者: 時間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
          Thumb指令在相比于ARM指令具有更高的代碼密度,但是在運(yùn)行效率上略低于ARM指令集,而且Thumb只是ARM指令集的一個子集。所有的ARM指令都是可以條件執(zhí)行的,而Thumb指令僅有一條指令具備條件執(zhí)行功能。所以很多應(yīng)用程序需要兩者的混合編程,因此存在ARM與Thumb狀態(tài)之間相互切換,而且相互之間的狀態(tài)切換的開銷幾乎為零。
          ARM與Thumb之間的狀態(tài)切換通過專用的轉(zhuǎn)移交換指令BX來實現(xiàn)。BX指令以通用寄存器(R0~R15)為操作數(shù),通過拷貝Rn到PC實現(xiàn)絕對跳轉(zhuǎn)。BX利用Rn寄存器中目的地址值的最后一位判斷跳轉(zhuǎn)后的狀態(tài)。
          下面是一段直接進(jìn)行狀態(tài)切換的代碼:
          CODE32 ;程序從ARM狀態(tài)開始
          ADR r0, ThumbProg+1 ;跳轉(zhuǎn)到ThumbProg
          BX r0 ;程序切換到Thumb狀態(tài)
          CODE16 ;Code16指示編譯器后面為Thumb指令
          ThumbProg
          MOV r2, #2
          MOV r3, #3
          ADD r2, r2, r3
          ADR r0, ARMProg
          BX r0 ;跳轉(zhuǎn)到ARMProg,程序切換到ARM狀態(tài)
          CODE32 ;code32指示編譯器后面為ARM指令
          ARMProg
          MOV r4, #4
          MOV r5, #5
          ADD r4, r4, r5


          關(guān)鍵詞: ARMThumb狀態(tài)切

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();