新聞中心

ARM匯編偽指令(1)

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

ARM匯編程序由機(jī)器指令、偽指令和宏指令組成。

本文引用地址:http://butianyuan.cn/article/201611/319390.htm

1,符號(hào)定義偽指令
符號(hào)定義偽指令用于定義ARM匯編程序的變量、對(duì)變量進(jìn)行賦值、定義寄存器名稱。

全局變量聲明: GBLA,GBLL,GBLS
局部變量聲明: LCLA,LCLL,LCLS
變量賦值: SETA,SETL,SETS

為一個(gè)通用寄存器列表定義名稱: RLIST

為一個(gè)協(xié)處理器的寄存器定義名稱: CN
為一個(gè)協(xié)處理器定義名稱: CP

為一個(gè)VFP寄存器定義名稱: DN,SN
為一個(gè)FPA浮點(diǎn)寄存器定義名稱: FN

1)GBLA,GBLL,GBLS
全局變量聲明,作用范圍是包含該變量的源程序。

GBLA variable ;聲明全局算術(shù)變量
GBLL variable ;聲明全局邏輯變量
GBLS variable ;聲明全局字符串變量

示例:
GBLL codedbg;聲明一個(gè)全局邏輯變量
codedbg SETL {TRUE} ;設(shè)置變量為TRUE

2)LCLA,LCLL,LCLS
局部變量聲明,用于宏定義的體中。

示例:

MACRO;聲明一個(gè)宏
SENDDAT $dat;宏的原型
LCLA bitno;聲明一個(gè)局部算術(shù)變量
...
bitno SETA 8;設(shè)置變量值為8
...
MEND

3),SETA,SETL,SETS
變量賦值偽指令。

示例:

GBLS ErrStr
...
ErrStr SETS "No,semaphone"
...

4),RLIST
為通用寄存器列表定義名稱。

示例:

LoReg RLIST {R0-R7};定義寄存器列表LoReg
...
STMFD SP!,LoReg;保存寄存器列表LoReg到堆棧

5),CN
定義協(xié)處理器的寄存器。

MemSet CN 1;將協(xié)處理器的寄存器1定義為MemSet

6),CP
定義協(xié)處理器。

DivRun CN 5;將協(xié)處理器5的名稱定義為DivRun

7),DN,SN
定義VFP的寄存器。

cdn DN 1 ;將VFP雙精度寄存器1的名稱定義為cdn
rex SN 3 ;將VFP單精度寄存器3的名稱定義為rex

8),FN
定義FPA浮點(diǎn)寄存器。

ibq FN 1 ;將浮點(diǎn)寄存器1的名稱定義為ibq

2,數(shù)據(jù)定義偽指令
數(shù)據(jù)定義偽指令用于數(shù)據(jù)表定義、文字池定義、數(shù)據(jù)空間分配等。

1)LTORG
用于聲明一個(gè)文字池。

2)MAP
用于定義一個(gè)結(jié)構(gòu)化的內(nèi)存表的首地址。

3)FIELD
定義結(jié)構(gòu)化內(nèi)存表中的數(shù)據(jù)域。
MAP,FIELD僅僅定義數(shù)據(jù)結(jié)構(gòu),并不實(shí)際分配內(nèi)存單元。

示例:

MAP 0x40003000 ;內(nèi)存表的首地址為0x40003000
count1 FIELD 4;定義數(shù)據(jù)域count1,長度為4字節(jié)
count2 FIELD 4;定義數(shù)據(jù)域count2,長度為4字節(jié)

LDR R1,count1 ;R1 <- [0x40003000+0x00]
STR R1,count2 ;將R1的值傳送到[0x40003000+0x04]

4)SPACE
用于分配一塊內(nèi)存單元,并用0初始化。

5)DCB
分配一段字節(jié)內(nèi)存單元。

6)DCD,DCDU
DCD和DCDU用于分配一段字內(nèi)存單元,但前者要字對(duì)齊,后者不需要。

7)DCDO

8)DCFD,DCFDU

9)DCFS,DCFSU

10)DCI

11)DCQ,DCQU

12)DCW,DCWU

3,報(bào)告?zhèn)沃噶?br />報(bào)告?zhèn)沃噶钣糜趨R編報(bào)告指示。

1)ASSERT
用于斷言錯(cuò)誤。
ASSERT Top<>Temp ;斷言Top不等于Temp

2)INFO

3)OPT

4)TTL,SUBT

4,匯編控制偽指令
匯編控制偽指令用于條件匯編、宏定義、重復(fù)匯編控制等。
IF,ELSE,ENDIF---條件匯編控制
MACRO,MEND---宏定義
WHILE,WEND---重復(fù)匯編

5,雜項(xiàng)偽指令
段定義,入口點(diǎn)設(shè)置,包含文件,標(biāo)號(hào)導(dǎo)出,引入聲明等。

ALIGN邊界對(duì)齊
AREA段定義
CODE16和CODE32 指令集定義
END匯編結(jié)束
ENTRY程序入口
EQU常量定義
EXPORT和GLORBAL 聲明一個(gè)符號(hào)可以被其他文件引用
IMPORT和EXTERN 聲明一個(gè)外部符號(hào)
GET和INCLUDE 包含文件
INCBIN包含不被匯編的文件
KEEP保留符號(hào)表中的局部符號(hào)
NOFP禁止浮點(diǎn)指令
REQUIRE指示兩段之間的依賴關(guān)系
PEQUIRE8和PRESERVE8 堆棧8字節(jié)對(duì)準(zhǔn)
RN給特定的寄存器命名
ROUT標(biāo)記局部標(biāo)號(hào)使用范圍的界限

6,ARM偽指令
ADR,ADRL,LDR,NOP,LDFD,LDFS




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

評(píng)論


技術(shù)專區(qū)

關(guān)閉