在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 跳轉(zhuǎn)指令之:跳轉(zhuǎn)指令B及帶連接的跳轉(zhuǎn)指令BL

      跳轉(zhuǎn)指令之:跳轉(zhuǎn)指令B及帶連接的跳轉(zhuǎn)指令BL

      作者: 時(shí)間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

      本文引用地址:http://www.biyoush.com/article/257056.htm

      3.指令操作的偽代碼

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

      IfconditionPassed{cond}then

      IfL==1then

      LR=addressoftheinstructionafterthebranchinstruftion

      PC=PC+(SignExtend(signed_immed_24)2)

      4.指令的使用

      L指令用于實(shí)現(xiàn)子程序調(diào)用。子程序的返回可以通過將LR寄存器的值復(fù)制到PC寄存器來實(shí)現(xiàn)。下面三種指令可以實(shí)現(xiàn)子程序返回。

      ·Xr14(如果體系結(jié)構(gòu)支持X指令)。

      ·MOVPC,r14。

      ·當(dāng)子程序在入口處使用了壓棧指令:

      STMFDr13!,{registers>,r14},

      可以使用指令。

      LDMFDr13!,{registers>,PC}

      將子程序返回地址放入PC中。

      匯編器通過以下步驟計(jì)算指令編碼中的signed_immed_24。

      (1)將PC寄存器的值作為本的基地址值。

      (2)從跳轉(zhuǎn)的目標(biāo)地址中減去上面所說的跳轉(zhuǎn)的基地址,生成字節(jié)偏移量。由于指令是字對(duì)齊的,該字節(jié)偏移量為4的倍數(shù)。

      (3)當(dāng)上面生成的字節(jié)偏移量超過-33554432~+33554430時(shí),不同的匯編器使用不同的代碼產(chǎn)生策略。

      (4)否則,將指令編碼字中的signed_immed_24設(shè)置成上述字節(jié)偏移量的bits[25∶2]。

      注意

      在一些RISC體系結(jié)構(gòu)的處理器中,存在延時(shí)跳轉(zhuǎn)(delayedbranch)模式,即在程序執(zhí)行跳轉(zhuǎn)到目標(biāo)地址之前,程序會(huì)執(zhí)行之后的指令。但在體系中,沒有這種延時(shí)跳轉(zhuǎn)機(jī)制。

      5.指令舉例

      (1)程序跳轉(zhuǎn)到LAE標(biāo)號(hào)處。

      AE;

      ADDr1,r2,#4

      ADDr3,r2,#8

      SUBr3,r3,r1

      LABLE

      SUBr1,r2,#8

      (2)跳轉(zhuǎn)到絕對(duì)地址0x1234處。

      B0x1234

      (3)跳轉(zhuǎn)到子程序func處執(zhí)行,同時(shí)將當(dāng)前PC值保存到LR中。

      BLfunc

      (4)條件跳轉(zhuǎn):當(dāng)CPSR寄存器中的C條件標(biāo)志位為1時(shí),程序跳轉(zhuǎn)到標(biāo)號(hào)LABLE處執(zhí)行。

      BCCLABLE

      (5)通過跳轉(zhuǎn)指令建立一個(gè)無限循環(huán)。

      LOOP

      ADDr1,r2,#4

      ADDr3,r2,#8

      SUBr3,r3,r1

      BLOOP

      (6)通過使用跳轉(zhuǎn)使程序體循環(huán)10次。

      MOVr0,#10

      LOOP

      SUBSr0,#1

      BNELOOP

      (7)條件子程序調(diào)用示例。

      ……

      CMPr0,#5;如果r05

      BLLTSUB1;則調(diào)用

      BLGESUB2;否則調(diào)用SUB2

      注意

      只有SUB1不改變條件碼,本例才能正確執(zhí)行,因?yàn)槿绻鸅LLT執(zhí)行了轉(zhuǎn)移,將返回到BLGE指令。如果條件碼被SUB1子程序改變,則SUB2可能又會(huì)被執(zhí)行,從而達(dá)不到指令的預(yù)期效果。


      上一頁 1 2 下一頁

      評(píng)論


      相關(guān)推薦

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

      關(guān)閉