<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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


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

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>