日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]帶連接和狀態(tài)切換的跳轉(zhuǎn)指令BLX(Branch with Link Exchange)使用一個寄存器中的絕對地址,用于使程序跳轉(zhuǎn)到Thumb狀態(tài)或從Thumb狀態(tài)返回。該指令用分支寄存器的最低位來更新CPSR中的T位,將返回地址寫入到連接寄存器LR中。

8.4帶狀態(tài)切換的連接跳轉(zhuǎn)指令BLX(2)1.指令編碼格式

帶連接和狀態(tài)切換的跳轉(zhuǎn)指令BLX(BranchwithLinkExchange)使用一個寄存器中的絕對地址,用于使程序跳轉(zhuǎn)到Thumb狀態(tài)或從Thumb狀態(tài)返回。該指令用分支寄存器的最低位來更新CPSR中的T位,將返回地址寫入到連接寄存器LR中。

指令編碼格式如圖8.4所示。

圖8.4BLX(2)指令編碼格式

2.語法格式

BLX{<cond>}<Rm>

①<cond>

為指令編碼中的條件域。它指示指令在什么條件下執(zhí)行。當<cond>忽略時,指令為無條件執(zhí)行(cond=AL(Alway))。

②<Rm>

寄存器Rm指定轉(zhuǎn)移目標,Rm的第0位拷貝到CPSR中的T位,bit[31∶0]移入PC。

·如果Rm的bit[0]=1,則跳轉(zhuǎn)時自動將CPSR中的標志位T置位,即把目標地址的代碼解釋為Thumb代碼。

·如果Rm的bit[0]=0,則跳轉(zhuǎn)時自動將CPSR中的標志位T復位,即把目標地址代碼解釋為ARM代碼。

3.指令操作的偽代碼

指令操作的偽代碼如下面程序段所示。

IfConditionPass{cond}then

LR=addressoftheinstructionafterthebranchinstruction

TFlag=Rm[0]

PC=RmAND0xfffffffe

注意

在這種情況下,如果Rm的bit[1∶0]=0b10,指令的執(zhí)行結(jié)果不可預(yù)知,因為這將導致在ARM狀態(tài)下非對齊的字訪問。

4.指令舉例

調(diào)用Thumb子程序。

CODE32 ;ARM代碼

……

BLXTSUB ;調(diào)用Thumb子程序

……

CODE16 ;Thumb代碼開始

TSUB

……

BXr14 ;返回ARM狀態(tài)

注意

(1)一些不支持Thumb指令集的ARM處理器將捕獲這些指令,允許軟件仿真Thumb指令。

(2)只有實現(xiàn)ARMv5版本以上的處理器支持BLX指令的兩種格式。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉