arm匯編b指令是絕對(duì)地址還是相對(duì)地址跳轉(zhuǎn)?
指令B的匯編形式是:標(biāo)簽::標(biāo)簽:莫夫R1,r2movR2和R3。從匯編指令的書(shū)寫形式來(lái)看,它確實(shí)是一條絕對(duì)的跳轉(zhuǎn)指令,但實(shí)際上,在翻譯指令"b標(biāo)簽"轉(zhuǎn)化為機(jī)器指令,匯編將計(jì)算標(biāo)簽與當(dāng)前PC的偏差。你可以用相對(duì)跳轉(zhuǎn)指令編寫位置無(wú)關(guān)的代碼。
匯編語(yǔ)言有哪兩種?
從CPU系統(tǒng)來(lái)看,常見(jiàn)的匯編有兩種:IBMPC匯編和ARM匯編。
IBMPC匯編是Intel匯編,因?yàn)镮BM最早推出PC,后來(lái)很多系統(tǒng)都要與之兼容,所以也是用同樣的匯編語(yǔ)言。ARM沒(méi)有完全不考慮兼容性,它的指令集和x86完全是兩個(gè)系統(tǒng),所以匯編語(yǔ)言也獨(dú)立開(kāi)發(fā)了一套。
網(wǎng)絡(luò)用語(yǔ)asm是什么意思?
ASM是Assembly的簡(jiǎn)稱,ASM指令是匯編指令的意思(一般指Intel80X86CPU中的指令集)。ASM指令是程序員寫程序用的,編譯器實(shí)際上會(huì)把ASM指令翻譯成機(jī)器碼(可以控制CPU做運(yùn)算的代碼)。
ASM至今已被廣泛使用。2015年,所有個(gè)人電腦和大型服務(wù)器大部分都使用ASM指令集。ASM的優(yōu)點(diǎn)是指令范圍廣,可以輕松處理大數(shù)據(jù),但缺點(diǎn)也很明顯。由于指令的長(zhǎng)度和復(fù)雜度不等,ASM的能耗很大,CPU體積也很大。與ASM相反,ARM是運(yùn)行在ARM處理器上的匯編語(yǔ)言,指令少,指令長(zhǎng)相等,能耗低,CPU小(這種匯編語(yǔ)言在智能手機(jī)上比較常見(jiàn),主要是能耗原因)。
匯編語(yǔ)言中助記符是什么意思?
1.指令集的概念
不同公司設(shè)計(jì)的CPU一般都有不同的指令集,比如Intel和ARM??梢哉J(rèn)為一個(gè)架構(gòu)對(duì)應(yīng)一組指令集,指令集的直觀表達(dá)就是全部都是二進(jìn)制的,附上一個(gè)ARM匯編的指令集格式:
可見(jiàn),指令有很多種,不同指令的每一位對(duì)應(yīng)不同的解釋含義。
這種純二進(jìn)制的東西叫機(jī)器碼。有了機(jī)器碼,就有了匯編語(yǔ)言。
2.匯編語(yǔ)言
在匯編語(yǔ)言中,用Memoni代替操作碼,用地址符號(hào)或標(biāo)號(hào)代替地址碼。這樣機(jī)器語(yǔ)言的二進(jìn)制代碼就被符號(hào)代替了,機(jī)器語(yǔ)言就變成了匯編語(yǔ)言。所以匯編語(yǔ)言也叫符號(hào)語(yǔ)言。
3.匯編語(yǔ)言的格式
在PC上實(shí)際上,對(duì)于x86系列處理器,有兩種語(yǔ)法格式,ATT匯編和英特爾匯編。這兩種格式在指令大小寫、操作數(shù)賦值方向、前綴、后綴、尋址等方面都有所不同。因?yàn)槭且环N處理器,X86系列,指令集是一樣的,也就是機(jī)器碼是一樣的,只是匯編代碼表達(dá)的形式看起來(lái)不一樣,因?yàn)閰R編語(yǔ)法格式不一樣。
說(shuō)到這,因?yàn)長(zhǎng)inux屬于GNU,GNU代表一個(gè)平臺(tái),一種開(kāi)發(fā)環(huán)境,GNU組織有自己的一套編譯器,自己匯編程序設(shè)計(jì)的語(yǔ)法格式是ATT規(guī)范,一般稱為ATT匯編。這與英特爾匯編不同。可以參考劉的鏈接,第一個(gè)回答。