匯編語(yǔ)言大于跳轉(zhuǎn)指令 為什么在匯編語(yǔ)言中需大量使用跳轉(zhuǎn)指令,而在C語(yǔ)言中卻盡量避免使用goto語(yǔ)句呢?
為什么在匯編語(yǔ)言中需大量使用跳轉(zhuǎn)指令,而在C語(yǔ)言中卻盡量避免使用goto語(yǔ)句呢?在C語(yǔ)言中,應(yīng)該盡量避免的不是goto,而是無(wú)條件地使用goto。匯編語(yǔ)言中有很多跳轉(zhuǎn)指令,但這些指令不是無(wú)條件跳轉(zhuǎn)指令
為什么在匯編語(yǔ)言中需大量使用跳轉(zhuǎn)指令,而在C語(yǔ)言中卻盡量避免使用goto語(yǔ)句呢?
在C語(yǔ)言中,應(yīng)該盡量避免的不是goto,而是無(wú)條件地使用goto。
匯編語(yǔ)言中有很多跳轉(zhuǎn)指令,但這些指令不是無(wú)條件跳轉(zhuǎn)指令。他們面前一定有伊夫尼和伊夫克。注意在匯編語(yǔ)言的使用中,雖然有跳轉(zhuǎn)指令,但不建議無(wú)條件地使用這些跳轉(zhuǎn)指令。它必須與一定的條件判斷一起使用。
經(jīng)常編寫(xiě)代碼的人知道,if、while break和for all包含跳轉(zhuǎn)函數(shù),但它們只在特定條件下跳轉(zhuǎn)。如果沒(méi)有像匯編中的jump這樣的跳轉(zhuǎn)指令,C語(yǔ)言甚至不能實(shí)現(xiàn)If,while break和for。
因此,匯編跳轉(zhuǎn)是正常的,是用來(lái)實(shí)現(xiàn)程序控制邏輯的必要元素。C語(yǔ)言應(yīng)該避免無(wú)條件地濫用goto。
請(qǐng)問(wèn)高手們匯編中跳轉(zhuǎn)指令執(zhí)行后,會(huì)不會(huì)回到它的下一條指令執(zhí)行?
B是分支的意思,B有幾種形式
BL:B帶鏈接,這意味著B(niǎo)L的下一個(gè)指令地址將被發(fā)送到LR寄存器,以便返回
BX:jump帶狀態(tài)轉(zhuǎn)換(arm->thumb,thumb->arm)]BLX:以上兩種形式的組合
只有B是跳轉(zhuǎn),直接跳轉(zhuǎn),不返回
在你的代碼中復(fù)位不僅是程序的開(kāi)始,而且是向量下面(包括第一個(gè))是中斷向量表。在ARM上
0中斷:重置
1:未定義的指令
2:軟件中斷
3:預(yù)取指令中止
4:數(shù)據(jù)訪問(wèn)中止
5:保留
6:IRQ
7:FIQ
請(qǐng)參閱ARM手冊(cè)
JLE(或JNG)(如果小于或等于,則跳轉(zhuǎn),或者不使用匯編語(yǔ)言中的條件轉(zhuǎn)移指令)。小于或等于,或不大于,則轉(zhuǎn)移。格式:JLE(或JNG)OPR測(cè)試條件:(SF?of)∨ZF=1
匯編的跳轉(zhuǎn)指令?
arm指令集的跳轉(zhuǎn)指令為匯編指令。arm指令集中的跳轉(zhuǎn)指令可以完成從當(dāng)前指令向前或向后跳轉(zhuǎn)32MB地址空間,包括以下四條指令:B跳轉(zhuǎn)指令BL帶返回跳轉(zhuǎn)指令BLX帶返回和狀態(tài)切換??刂苽鬏斨噶睿河糜诳刂瞥绦虻膱?zhí)行過(guò)程。匯編語(yǔ)言中的跳轉(zhuǎn)控制傳輸指令類(lèi)型指令指定無(wú)條件傳輸指令JMP(段間和段內(nèi)傳輸)、條件傳輸指令JZ(如果結(jié)果為0(或相等)則傳輸)、JS(如果結(jié)果為負(fù)則傳輸)、JNS(如果結(jié)果為正則則傳輸),Jo(溢出時(shí)傳輸)、jno(無(wú)溢出時(shí)傳輸)、JP(奇偶校驗(yàn)位為1時(shí)傳輸)、JNP(奇偶校驗(yàn)位為0時(shí)傳輸)。補(bǔ)充:ARM處理器是acorn計(jì)算機(jī)有限公司為低成本市場(chǎng)設(shè)計(jì)的第一款RISC微處理器,早前被稱為acorn rismachine。ARM處理器本身是32位設(shè)計(jì),但它也配備了16位指令集。一般來(lái)說(shuō),與等效的32位代碼相比,它可以節(jié)省35%,但它可以保留32位系統(tǒng)的所有優(yōu)點(diǎn)。