<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM匯編偽指令介紹

ARM匯編偽指令介紹

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏


4、MEXIT
語(yǔ)法格式:
MEXIT
MEXIT用于從宏定義中跳轉出去。

其他常用的偽指令
還有一些其他的偽指令,在匯編程序中經(jīng)常會(huì )被使用,包括以下幾條:
AREA
ALIGN
CODE16、CODE32
ENTRY
END
EQU
EXPORT(或GLOBAL
IMPORT
EXTERN
GET(或INCLUDE
INCBIN
RN
ROUT
1、AREA
語(yǔ)法格式:
AREA段名屬性1,屬性2,……
AREA偽指令用于定義一個(gè)代碼段或數據段。其中,段名若以數字開(kāi)頭,則該段名需用|括起來(lái),如|1_test|。
屬性字段表示該代碼段(或數據段)的相關(guān)屬性,多個(gè)屬性用逗號分隔。常用的屬性如下:
CODE屬性:用于定義代碼段,默認為READONLY。
DATA屬性:用于定義數據段,默認為READWRITE。
READONLY屬性:指定本段為只讀,代碼段默認為READONLY。
READWRITE屬性:指定本段為可讀可寫(xiě),數據段的默認屬性為READWRITE。
ALIGN屬性:使用方式為ALIGN表達式。在默認時(shí),ELF(可執行連接文件)的代碼段和數據段是按字對齊的,表達式的取值范圍為031,相應的對齊方式為2表達式次方。
COMMON屬性:該屬性定義一個(gè)通用的段,不包含任何的用戶(hù)代碼和數據。各源文件中同名的COMMON段共享同一段存儲單元。
一個(gè)匯編語(yǔ)言程序至少要包含一個(gè)段,當程序太長(cháng)時(shí),也可以將程序分為多個(gè)代碼段和數據段。
使用示例:
AREAInit,CODE,READONLY
該偽指令定義了一個(gè)代碼段,段名為Init,屬性為只讀

2、ALIGN
語(yǔ)法格式:
ALIGN{表達式{,偏移量}}
ALIGN偽指令可通過(guò)添加填充字節的方式,使當前位置滿(mǎn)足一定的對其方式|。其中,表達式的值用于指定對齊方式,可能的取值為2的冪,如1、2、4、8、16等。若未指定表達式,則將當前位置對齊到下一個(gè)字的位置。偏移量也為一個(gè)數字表達式,若使用該字段,則當前位置的對齊方式為:2的表達式次冪+偏移量。
使用示例:
AREAInit,CODE,READONLY,ALIEN3;指定后面的指令為8字節對齊。
指令序列
END

3、CODE16、CODE32
語(yǔ)法格式:
CODE16(或CODE32
CODE16偽指令通知編譯器,其后的指令序列為16位的Thumb指令。
CODE32偽指令通知編譯器,其后的指令序列為32位的ARM指令。
若在匯編源程序中同時(shí)包含ARM指令和Thumb指令時(shí),可用CODE16偽指令通知編譯器其后的指令序列為16位的Thumb指令,CODE32偽指令通知編譯器其后的指令序列為32位的ARM指令。因此,在使用ARM指令和Thumb指令混合編程的代碼里,可用這兩條偽指令進(jìn)行切換,但注意他們只通知編譯器其后指令的類(lèi)型,并不能對處理器進(jìn)行狀態(tài)的切換。
使用示例:
AREAInit,CODE,READONLY
……
CODE32;通知編譯器其后的指令為32位的ARM指令
LDRR0,=NEXT1;將跳轉地址放入寄存器R0
BXR0;程序跳轉到新的位置執行,并將處理器切換到Thumb工作狀態(tài)
……
CODE16;通知編譯器其后的指令為16位的Thumb指令
NEXTLDRR3,=0x3FF
……
END;程序結束

4、ENTRY
語(yǔ)法格式:
ENTRY
ENTRY偽指令用于指定匯編程序的入口點(diǎn)。在一個(gè)完整的匯編程序中至少要有一個(gè)ENTRY(也可以有多個(gè),當有多個(gè)ENTRY時(shí),程序的真正入口點(diǎn)由鏈接器指定),但在一個(gè)源文件里最多只能有一個(gè)ENTRY(可以沒(méi)有)。
使用示例:
AREAInit,CODE,READONLY
ENTRY;指定應用程序的入口點(diǎn)
……

5、END
語(yǔ)法格式:
END
END偽指令用于通知編譯器已經(jīng)到了源程序的結尾。
使用示例:
AREAInit,CODE,READONLY
……
END;指定應用程序的結尾

6、EQU
語(yǔ)法格式:
名稱(chēng)EQU表達式{,類(lèi)型}
EQU偽指令用于為程序中的常量、標號等定義一個(gè)等效的字符名稱(chēng),類(lèi)似于C語(yǔ)言中的#define。
其中EQU可用*代替。
名稱(chēng)為EQU偽指令定義的字符名稱(chēng),當表達式為32位的常量時(shí),可以指定表達式的數據類(lèi)型,可以有以下三種類(lèi)型:
CODE16、CODE32DATA
使用示例:
TestEQU50;定義標號Test的值為50
AddrEQU0x55,CODE32;定義Addr的值為0x55,且該處為32位的ARM指令。

7、EXPORT(或GLOBAL)
語(yǔ)法格式:
EXPORT標號{[WEAK]}
EXPORT偽指令用于在程序中聲明一個(gè)全局的標號,該標號可在其他的文件中引用。EXPORT可用GLOBAL代替。標號在程序中區分大小寫(xiě),[WEAK]選項聲明其他的同名標號優(yōu)先于該標號被引用。
使用示例:
AREAInit,CODE,READONLY
EXPORTStest;聲明一個(gè)可全局引用的標號Stest……
END

8、IMPORT
語(yǔ)法格式:
IMPORT標號{[WEAK]}
IMPORT偽指令用于通知編譯器要使用的標號在其他的源文件中定義,但要在當前源文件中引用,而且無(wú)論當前源文件是否引用該標號,該標號均會(huì )被加入到當前源文件的符號表中。
標號在程序中區分大小寫(xiě),[WEAK]選項表示當所有的源文件都沒(méi)有定義這樣一個(gè)標號時(shí),編譯器也不給出錯誤信息,在多數情況下將該標號置為0,若該標號為BBL指令引用,則將BBL指令置為NOP操作。
使用示例:
AREAInit,CODE,READONLY
IMPORTMain;通知編譯器當前文件要引用標號Main,但Main在其他源文件中定義……
END

9、EXTERN
語(yǔ)法格式:
EXTERN標號{[WEAK]}
EXTERN偽指令用于通知編譯器要使用的標號在其他的源文件中定義,但要在當前源文件中引用,如果當前源文件實(shí)際并未引用該標號,該標號就不會(huì )被加入到當前源文件的符號表中。標號在程序中區分大小寫(xiě),[WEAK]選項表示當所有的源文件都沒(méi)有定義這樣一個(gè)標號時(shí),編譯器也不給出錯誤信息,在多數情況下將該標號置為0,若該標號為BBL指令引用,則將BBL指令置為NOP操作。
使用示例:
AREAInit,CODE,READONLY
EXTERNMain;通知編譯器當前文件要引用標號Main,但Main在其他源文件中定義……
END

10、GET(或INCLUDE)
語(yǔ)法格式:
GET文件名
GET偽指令用于將一個(gè)源文件包含到當前的源文件中,并將被包含的源文件在當前位置進(jìn)行匯編處理??梢允褂?wbr />INCLUDE代替GET。
匯編程序中常用的方法是在某源文件中定義一些宏指令,用EQU定義常量的符號名稱(chēng),用MAP和FIELD定義結構化的數據類(lèi)型,然后用GET偽指令將這個(gè)源文件包含到其他的源文件中。使用方法與C語(yǔ)言中的include相似。
GET偽指令只能用于包含源文件,包含目標文件需要使用INCBIN偽指令
使用示例:
AREAInit,CODE,READONLY
GETa1.s;通知編譯器當前源文件包含源文件a1.s
GETC:a2.s;通知編譯器當前源文件包含源文件C:a2.s……
END

11、INCBIN
語(yǔ)法格式:
INCBIN文件名
INCBIN偽指令用于將一個(gè)目標文件或數據文件包含到當前的源文件中,被包含的文件不作任何變動(dòng)的存放在當前文件中,編譯器從其后開(kāi)始繼續處理。
使用示例:
AREAInit,CODE,READONLY
INCBINa1.dat;通知編譯器當前源文件包含文件a1.dat
INCBINC:a2.txt;通知編譯器當前源文件包含文件C:a2.txt……
END

12、RN
語(yǔ)法格式:
名稱(chēng)RN表達式
RN偽指令用于給一個(gè)寄存器定義一個(gè)別名。采用這種方式可以方便程序員記憶該寄存器的功能。其中,名稱(chēng)為給寄存器定義的別名,表達式為寄存器的編碼。
使用示例:
TempRNR0;將R0定義一個(gè)別名Temp

13、ROUT
語(yǔ)法格式:
{名稱(chēng)}ROUT
ROUT偽指令用于給一個(gè)局部變量定義作用范圍。在程序中未使用該偽指令時(shí),局部變量的作用范圍為所在的AREA,而使用ROUT后,局部變量的作為范圍為當前ROUT和下一個(gè)ROUT之間。

本文引用地址:http://dyxdggzs.com/article/201611/322954.htm

上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: ARM匯編偽指

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>