找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7464|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

ARM常用的偽指令

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111887 發(fā)表于 2017-2-1 10:12 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
1、 AREA
AREA 偽指令用于定義一個(gè)代碼段或數(shù)據(jù)段。   
    語法格式:   
    AREA 段名 屬性 1 ,屬性 2 ,……   
    其中,段名若以數(shù)字開頭,則該段名需用 “ | ” 括起來,如 |1_test| 。   
    屬性字段表示該代碼段(或數(shù)據(jù)段)的相關(guān)屬性,多個(gè)屬性用逗號(hào)分隔。常用的屬性如下:   
— CODE 屬性:用于定義代碼段,默認(rèn)為 READONLY 。   
— DATA 屬性:用于定義數(shù)據(jù)段,默認(rèn)為 READWRITE 。   
— READONLY 屬性:指定本段為只讀,代碼段默認(rèn)為 READONLY 。   
— READWRITE 屬性:指定本段為可讀可寫,數(shù)據(jù)段的默認(rèn)屬性為 READWRITE 。   
— ALIGN 屬性:使用方式為ALIGN表達(dá)式。在默認(rèn)時(shí), ELF (可執(zhí)行連接文件)的代碼段和數(shù)據(jù)段是按字對(duì)齊的,表達(dá)式的取值范圍為 0 ~ 31 ,相應(yīng)的對(duì)齊方式為表達(dá)式2次方。   
— COMMON 屬性:該屬性定義一個(gè)通用的段,不包含任何的用戶代碼和數(shù)據(jù)。各源文件中同名的COMMON段共享同一段存儲(chǔ)單元。   
   一個(gè)匯編語言程序至少要包含一個(gè)段,當(dāng)程序太長時(shí),也可以將程序分為多個(gè)代碼段和數(shù)據(jù)段。   
    使用示例:
AREA Init , CODE , READONLY   
   該偽指令定義了一個(gè)代碼段,段名為 Init ,屬性為只讀


2、 ALIGN   
ALIGN 偽指令可通過添加填充字節(jié)的方式,使當(dāng)前位置滿足一定的對(duì)其方式 。
    語法格式:   
    ALIGN { 表達(dá)式 { ,偏移量 }}   
   其中,表達(dá)式的值用于指定對(duì)齊方式,可能的取值為2的冪,如 1 、 2 、 4 、 8 、 16 等。若未指定表達(dá)式,則將當(dāng)前位置對(duì)齊到下一個(gè)字的位置。偏移量也為一個(gè)數(shù)字表達(dá)式,若使用該字段,則當(dāng)前位置的對(duì)齊方式為: 2 的表達(dá)式次冪+偏移量。   
使用示例:   
    AREA Init , CODE , READONLY , ALIEN = 3 ;指定后面的指令為8字節(jié)對(duì)齊。      指令序列   
    END   
   
4、 ENTRY
ENTRY 偽指令用于指定匯編程序的入口點(diǎn)。   
    語法格式:   
    ENTRY   
    在一個(gè)完整的匯編程序中至少要有一個(gè)ENTRY(當(dāng)有多個(gè)ENTRY時(shí),程序的真正入口點(diǎn)由鏈接器指定),但在一個(gè)源文件里最多只能有一個(gè)ENTRY(可以沒有)。   
    使用示例:   
    AREA Init , CODE , READONLY   
    ENTRY ;指定應(yīng)用程序的入口點(diǎn)   
    ……   
5、 END
END 偽指令用于通知編譯器已經(jīng)到了源程序的結(jié)尾。   
    語法格式:   
    END        
    使用示例:   
    AREA Init , CODE , READONLY   
    ……   
    END ;指定應(yīng)用程序的結(jié)尾   


6、 EQU
EQU 偽指令用于為程序中的常量、標(biāo)號(hào)等定義一個(gè)等效的字符名稱,類似于C語言中的#define 。   
    語法格式:   
    名稱 EQU 表達(dá)式 { ,類型 }      
    其中 EQU 可用 “ * ” 代替。   
    名稱為EQU偽指令定義的字符名稱,當(dāng)表達(dá)式為32位的常量時(shí),可以指定表達(dá)式的數(shù)據(jù)類型,可以有以下三種類型:   
    CODE16 、 CODE32 和 DATA   
7、 EXPORT(或GLOBAL)   
    語法格式:   
    EXPORT 標(biāo)號(hào) {[WEAK]}   
    EXPORT 偽指令用于在程序中聲明一個(gè)全局的標(biāo)號(hào),該標(biāo)號(hào)可在其他的文件中引用。 EXPORT可用GLOBAL代替。標(biāo)號(hào)在程序中區(qū)分大小寫, [WEAK] 選項(xiàng)聲明其他的同名標(biāo)號(hào)優(yōu)先于該標(biāo)號(hào)被引用。   
    使用示例:   
    AREA Init , CODE , READONLY   
    EXPORT Stest ;聲明一個(gè)可全局引用的標(biāo)號(hào)Stest……   
    END   


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


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


10、 GET(或INCLUDE)   
    語法格式:   
    GET 文件名   
    GET 偽指令用于將一個(gè)源文件包含到當(dāng)前的源文件中,并將被包含的源文件在當(dāng)前位置進(jìn)行匯編處理?梢允褂 INCLUDE 代替 GET 。   
    匯編程序中常用的方法是在某源文件中定義一些宏指令,用 EQU 定義常量的符號(hào)名稱,用MAP和FIELD 定義結(jié)構(gòu)化的數(shù)據(jù)類型,然后用 GET 偽指令將這個(gè)源文件包含到其他的源文件中。使用方法與 C 語言中的 “ include ” 相似。   
    GET 偽指令只能用于包含源文件,包含目標(biāo)文件需要使用 INCBIN 偽指令   
    使用示例:   
    AREA Init , CODE , READONLY   
    GET a1.s ;通知編譯器當(dāng)前源文件包含源文件a1.s   
    GE T C:\a2.s ;通知編譯器當(dāng)前源文件包含源文件C:\ a2.s ……   
    END   


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


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


13、 ROUT   
    語法格式:   
    { 名稱 } ROUT   
    ROUT 偽指令用于給一個(gè)局部變量定義作用范圍。在程序中未使用該偽指令時(shí),局部變量的作用范圍為所在的 AREA ,而使用 ROUT 后,局部變量的作為范圍為當(dāng)前 ROUT 和下一個(gè) ROUT 之間。
    否則,zero=0(跳到SuspendUp處執(zhí)行)

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:338173 發(fā)表于 2019-11-15 14:43 | 只看該作者
可以小老弟
回復(fù)

使用道具 舉報(bào)

板凳
ID:63317 發(fā)表于 2019-11-26 08:09 | 只看該作者
謝謝分享資料
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表