嵌入式系統(tǒng)原理與應(yīng)用常用Arm匯編偽指令.docx_第1頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用常用Arm匯編偽指令.docx_第2頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用常用Arm匯編偽指令.docx_第3頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用常用Arm匯編偽指令.docx_第4頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用常用Arm匯編偽指令.docx_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、常用Arm匯編偽指令在Arm匯編語言程序中,有一些特殊指令用于對(duì)匯編過程進(jìn)行控制,這些指令不是可執(zhí)行指令也沒有 對(duì)應(yīng)的機(jī)器碼,只用于匯編過程中為匯編程序提供匯編信息,這些指令稱為偽指令,它們所完成的操作稱 為偽操作。常用的偽指令有以下幾種:符號(hào)定義偽指令、數(shù)據(jù)定義偽指令、匯編控制偽指令、信息報(bào)告?zhèn)?指令以及雜項(xiàng)偽指令。下面列出了上述幾種常用的Arm匯編偽指令。1.符號(hào)定義偽指令符號(hào)定義偽指令用于定義匯編程序中的變量、對(duì)變量賦值以及定義寄存器別名等操作。表2.1符號(hào)定義偽指令偽指令指令格式指令功能GBLAGBLA Variable聲明一個(gè)全局的算術(shù)變量,并將其初始化成0GBLLAGBLLA Va

2、riable聲明一個(gè)全局的邏輯變量,并將其初始化成FALSE (假)GBLSGBLS Variable聲明一個(gè)全局的字符串變量,并將其初始化成空串LCLALCLA Variable聲明一個(gè)局部的算術(shù)變量,并將其初始化成。LCLLLCLL Variable聲明 個(gè)局部的邏輯變量,并將其初始化成FALSE (假)LCLSLCLS Variable尸明一個(gè)局部的字付串變量,并將其初始化成空串SETASETA Variable expr緝一勺、生 局或局部算木變量賦值SETLSETL Variable expr綃一個(gè)全局或局部邏輯變量賦值SETSSETS Variable expr綃 個(gè)全局或局部字苻

3、串變量賦值RLISTname RLIST (list of registers為一,1、通用寄存器列表ZE義名稱name CN expr為一個(gè)協(xié)處理器的寄存器文名稱CPname CP expr為一個(gè)1辦處理器定義名稱DN/SNname DN/SN expr為一丁雙精度/單精度R'J VFP寄存器定義舊稱rNname ftn expr為T FPA /學(xué)H劉仔潴正義右標(biāo)2.數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令一般用于為特定的數(shù)據(jù)分配存儲(chǔ)單元,并可對(duì)分配的存儲(chǔ)單元進(jìn)行初始化。表2.2數(shù)據(jù)定義偽指令兒,用于分配一號(hào)連續(xù)的半字存儲(chǔ)單元,并用指定的表達(dá)式DCW/DCWU (lableDCW(Uexpr,e

4、xpr 初始化。用DCW分配的字存儲(chǔ)單元是半字對(duì)齊的,而 用DCWU分配的字存儲(chǔ)單元并不嚴(yán)格半字對(duì)齊用 于分配 片連續(xù)的字存儲(chǔ)單兀,并用指定的表達(dá)式初DCD/DCDU lableDCD(Uexpr,expr 始化。用DCD分配的字存儲(chǔ)單元是字對(duì)齊的,而用 DCDU分配的字存儲(chǔ)單元并不嚴(yán)格字對(duì)齊DCFD/DCFDU(lable DCFDU expr ,expr為雙精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲(chǔ)單元,并用指 定的表達(dá)式初始化。每個(gè)雙精度的浮點(diǎn)數(shù)占據(jù)兩個(gè)字單 元,用DCFD分配的字存儲(chǔ)單元是字對(duì)齊的,而用 DCFDU分配的字存儲(chǔ)單元并不嚴(yán)格字對(duì)齊DCFS/DCFSU(lable DCFSU exp

5、r ,expr)為單精度的浮點(diǎn)數(shù)分配一片連續(xù)的字存儲(chǔ)單元,并用指 定的表達(dá)式初始化。每個(gè)單精度的浮點(diǎn)數(shù)占據(jù)一個(gè)字單 元,用DCFS分配的字存儲(chǔ)單元是字對(duì)齊的,而用 DCFSU分配的字存儲(chǔ)單元并不嚴(yán)格字對(duì)齊DCQ/DCQU(lable DCQ(U expr ,expr)用于分配一片以8個(gè)字節(jié)為單位的連續(xù)存儲(chǔ)區(qū)域,并用 指定的表達(dá)式初始化。用DCQ分配的存儲(chǔ)單元是字對(duì)齊 的,而用DCQU分配的存儲(chǔ)單元并不嚴(yán)格字對(duì)齊。DCDO(lable DCDO expr ,expr)7T配一段于刈介的于內(nèi)仔空間,并用指定的表這式初始 化DCI(lable DCI expr ,expr在Arm代碼中分配一段子對(duì)齊

6、的內(nèi)存單兀,井用指的 表達(dá)式初始化;在Thumb代碼中分配一段半字對(duì)齊的內(nèi) 存單元,并用指定的表達(dá)式初始化SPACE(lable SPACE expr用J力配片吐緩日'J仔俑區(qū)域開初如化為0。具甲,衣達(dá) 式為要分配的字節(jié)數(shù)定義一個(gè)姑均仆的內(nèi)存表的首拙址 MAP偽指令誦常 與MAPMAP expr , base-registerAL1 "P117 Io U J r J 1J "IX 目 J 曰 > Hi ALL, LvirxL L/y J 曰 < Acl i IJ JFIELD偽指令配合使用來定義結(jié)構(gòu)化的內(nèi)存表宋義一個(gè)結(jié)構(gòu)化的內(nèi)存表中的數(shù)據(jù)域,表i大式的俏

7、為當(dāng)FIELDT TORG(lable FIELD exprT TORC;前數(shù)據(jù)域在內(nèi)存表中所占的字節(jié)數(shù)說明一個(gè)數(shù)據(jù)緩沖池CX字池一)的奔始3.匯編控制偽指令匯編控制偽指令用于控制匯編程序的執(zhí)行流程。表2.3匯編控制偽指令.二.L,.J.一-.1!_r ."LIF、ELSE、ENDIF指令序列1(ELSE指令序列2)ENDIFWHTT F Inairal pxnrpss;inn根據(jù)條件的成立與否決定是否執(zhí)行某個(gè)指令序列。當(dāng)IF后 面的邏輯表達(dá)式為真,則執(zhí)行指令序列1,否則執(zhí)行指令序 列2,其中,ELSE及指令序列2可以沒有WHILE > WEND指令序列WENDMACRO根據(jù)條

8、件的成立與否決定是否循環(huán)執(zhí)行某個(gè)指令序列MACRO、MEND、MEXIT($lablemacroname($parameter,$parament.;宏代碼將一段代碼JE義為一T整體,也就是玄冶堂??梢栽诔绦?中通過宏指令多次調(diào)用該段代碼。其中,$標(biāo)號(hào)在宏指令被 展開時(shí),標(biāo)號(hào)會(huì)被替換為用戶定義的符號(hào),宏指令可以使 用一個(gè)或多個(gè)參數(shù),當(dāng)宏指令被展開時(shí),這些參數(shù)被相應(yīng)MEND的值替換;MEXIT用于從宏定義中跳轉(zhuǎn)出去4 .信息報(bào)告?zhèn)沃噶顖?bào)告?zhèn)沃噶钣糜趨R編報(bào)告指示。表2.4信息報(bào)告?zhèn)沃噶顐沃噶钪噶罡袷街噶罟δ蹵SSERTASSERT logical-expression斷言錯(cuò)誤偽指令,在匯編編譯器對(duì)

9、匯編程序的第二遍掃描中, 若其中ASSERT條件不成立,ASSERT偽指令將報(bào)告該錯(cuò)誤信 息INFOINFO numerica-expression, string-expression匯編診斷信息顯示偽指令,在匯編處理過程的第一遍掃描或者 第二遍掃描時(shí)報(bào)告診斷信息,其中,numerica-expression為數(shù)據(jù) 表達(dá)式,若為0,則在第一遍掃描時(shí)報(bào)告診斷信息,否則在第 二遍掃描時(shí)報(bào)告診斷信息,string-expression為要顯示的字符串OPTOPTn設(shè)置列表選項(xiàng)偽指令,通過OPT偽操作可以在源程序中設(shè)置列 表選項(xiàng),其中n為選項(xiàng)編碼,可取值如下:1:設(shè)置常規(guī)列表選項(xiàng)2:關(guān)閉常規(guī)列表選項(xiàng)

10、4:設(shè)置分頁(yè)符,在新的一頁(yè)開始顯示8:將行號(hào)重新設(shè)置為016:設(shè)置選項(xiàng),顯示SET,GBL,LCL偽指令32:設(shè)置選項(xiàng),不顯示SET,GBL,LCL偽指令64:設(shè)置選項(xiàng),顯示宏展開128:設(shè)置選項(xiàng),不顯示宏展開256:設(shè)置選項(xiàng),顯示宏調(diào)用512:設(shè)置選項(xiàng),不顯示宏調(diào)用1024:設(shè)置選項(xiàng),顯示第一遍掃描列表2048:設(shè)置選項(xiàng),不顯示第一遍掃描列表4096:設(shè)置選項(xiàng),顯示條件匯編偽指令8192:設(shè)置選項(xiàng),不顯示條件匯編偽指令16384:設(shè)置選項(xiàng),顯示MEND偽指令32768:設(shè)置選項(xiàng),不顯示MEND偽指令TTLTTL title插入標(biāo)題偽指令,在列表文件的每一貝的開頭插入一個(gè)標(biāo)題SUBTSUBT

11、subtitle插入標(biāo)題偽指令,在列表文件的每一貝的開頭插入一個(gè)子標(biāo)題5.雜項(xiàng)偽指令雜項(xiàng)偽指令是未包含在表2.1至2.4中且在匯編程序設(shè)計(jì)中常用的偽指令。表2_5雜項(xiàng)偽指令指令功能ALIGNALIGN expr,offset)邊界對(duì)齊偽指令,通過添加補(bǔ)丁字節(jié)使當(dāng)前位置滿足一定的對(duì)齊格式。其中expr用于指定對(duì)齊格式,取值為2的n 次幕,表示當(dāng)前位置對(duì)齊到:offset+nxexprAREAAREA sectionname ,attr ,attr.段定義偽指令,sectionname為所定義的代碼段或數(shù)據(jù)段的 名稱,attr為該段的屬性CODE 16CODE32CODE 16CODE32指令集定

12、義偽指令,CODE 16指示編譯器后面的指令為16 位的Thumb指令;CODE32指示編譯器后面的指令為32 位的Arm指令ENDEND匯編結(jié)束偽指令,用于指下匯編編譯器源文件己經(jīng)結(jié)束ENTRYENTRY用于指定程序入口點(diǎn)EQUname EQU expr ,type常量定義偽指令EXPORTGLORBALEXPORT symbol LWEAKJ GLORBAL symbol WEAK)聲明一個(gè)符號(hào)口j以被其他文件使用,symbol為要聲明的符 號(hào)名稱,WEAK聲明其他的同名符由于本符號(hào)被應(yīng)用IMPORTEXPORTIMPORT symbol (WEAK EXPORT symbol WEAK尸

13、明一,1、外部符虧,symbol為要尸明的苻方石稱,WEAK 指定該選項(xiàng)后,如果symbol在所有的源文件中沒有被定義,編譯器不會(huì)生成如何錯(cuò)誤信息,同時(shí)編譯器也不會(huì)到當(dāng)前 沒有被INCLUDE包含進(jìn)來的庫(kù)去查找該標(biāo)號(hào)GETGET filename將一個(gè)源文件包含到當(dāng)前源文件中,并對(duì)被包含的文件進(jìn)INCLUDETNCRTNINCLUDE filenameTNCRTN filename行匯編處理,filename為要包含的源文件名或路徑信息 將一個(gè)文件包含到當(dāng)前的源文件中,而被包含的文件不進(jìn)KEEPKEEP (symbol仃匯編處埋才旨示編譯器保留符號(hào)表中的局部符號(hào),symbol為要保留的 局部符號(hào),若無此項(xiàng),則除了基于寄存器之外的所有符號(hào)將包含在目標(biāo)又件的符號(hào)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論