ARM匯編偽指令詳解

我們做一些操作會(huì)有一點(diǎn)麻煩,比方進(jìn)行一個(gè)if then的判斷操作。比如要比較a>b,則去調(diào)用某個(gè)函數(shù),這就要先去比較a,b的值,然后就會(huì)跳轉(zhuǎn),跳轉(zhuǎn)又會(huì)比較大小,less than,就是BLLT,然后跳轉(zhuǎn)到loop,我們通過這些來實(shí)現(xiàn)if then的操作。循環(huán),先定義一個(gè)loop,然后有一些語(yǔ)句跳轉(zhuǎn)到這個(gè)語(yǔ)句,然后進(jìn)行條件判斷跳出,然后又進(jìn)行if then的方式來進(jìn)行判斷。其實(shí)這樣是很麻煩的。為了方便,引入了相當(dāng)于宏。c語(yǔ)言里有宏的概念,引入類似于宏的方式,把復(fù)雜的有好幾天指令進(jìn)行跳轉(zhuǎn)的完成的小功能級(jí)進(jìn)行新的標(biāo)簽設(shè)定,這就是偽指令。

偽指令作用:我們的指令已經(jīng)可以做各類操作了,但我們操作起來太麻煩了。比如我現(xiàn)在要設(shè)置一個(gè)值給寄存器R0,但下次我修改了寄存器R0之后又需要讀出來剛才的值,那我們就要先臨時(shí)保存值到SPSR,CPSR,然后不斷切換。再比如,我們要做一個(gè)循環(huán),就要用label結(jié)合BL不斷進(jìn)行,但如果我們要循環(huán)很多次。我們就定義了一些類似于帶參數(shù)的宏的操作一樣,來定義我們的偽指令,方便我們更好的實(shí)現(xiàn)匯編程序邏輯。偽指令只是在匯編器之前作用,匯編以后翻譯為標(biāo)準(zhǔn)的匯編令集。

偽指令的類別偽指令可分為ARM匯編偽指令和GNU匯編偽指令。偽指令又類似于學(xué)c語(yǔ)言的時(shí)候的預(yù)處理,在預(yù)處理的時(shí)候把它定義于一堆的宏轉(zhuǎn)化為真正的c語(yǔ)言的代碼。同樣,偽指令是在定義好之后的匯編,匯編的時(shí)候會(huì)把它翻譯成標(biāo)準(zhǔn)指令,也許一條簡(jiǎn)單的偽指令可以翻譯成很多條標(biāo)準(zhǔn)的匯編指令集,所以這就是偽指令最重要的作用。

ARM匯編偽指令是ARM公司的,GNU匯編偽指令是GNU平臺(tái)的。他們有自己的匯編器,不同的匯編器的解釋語(yǔ)法可以設(shè)成不同。匯編語(yǔ)言分成兩塊:標(biāo)準(zhǔn)指令集和非標(biāo)準(zhǔn)指令集。偽指令,我們說了,是類似于宏的東西,是為了簡(jiǎn)化工作的,所以這種非標(biāo)準(zhǔn)指令集在不同的匯編器下,支持的語(yǔ)法是稍微有點(diǎn)差別的。今天講解ARM匯編偽指令,在工作中也常常會(huì)遇到GNU的。其實(shí)都大同小異,無非是GNU的喜歡前面加個(gè)點(diǎn)來表示偽指令。操作:這些都是標(biāo)準(zhǔn)指令,這個(gè)開始標(biāo)識(shí),這是一塊代碼區(qū)域,這個(gè)不是標(biāo)準(zhǔn)指令,只是告訴我們一個(gè)含義,這就是偽指令。同樣enter也是偽指令,只是為了標(biāo)識(shí)用的,包括macro,還有這些大家以前沒怎么看過的都是偽指令。

現(xiàn)在再看一下GNU偽指令:這個(gè)是一個(gè)裸板程序,這個(gè)裸板程序是點(diǎn)燈的,是板子上控制燈的程序,而且是混合編程的,有c語(yǔ)言和匯編的。來看一下:這個(gè)地方.globl,


就是一個(gè)偽指令,這個(gè)得意思其實(shí)是跟剛才入口出是蠻像的。.globl是全局訪問的區(qū)域段。define也是一個(gè)偽指令,去定義一些變量。這個(gè)loopl跟之前的是一樣的,這里是一個(gè)偽指令,后面有一個(gè)冒號(hào),所以大家只需簡(jiǎn)單地做一個(gè)轉(zhuǎn)換就行了。 這里start的意思就是start為入口函數(shù),相當(dāng)于代表了enter加start標(biāo)簽。這里globl的含義是export,對(duì)外導(dǎo)出。這兩種偽指令是有一定的差別的,今天還是學(xué)ARM的標(biāo)準(zhǔn)的匯編偽指令,GNU偽指令都是大同小異的。


原文鏈接:http://www.maiziedu.com/wiki/arm/directive/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容