ARM汇编伪指令(1)
ARM汇编程序由机器指令、伪指令和宏指令组成。
1,符号定义伪指令
符号定义伪指令用于定义ARM汇编程序的变量、对变量进行赋值、定义寄存器名称。
全局变量声明: GBLA,GBLL,GBLS
局部变量声明: LCLA,LCLL,LCLS
变量赋值: SETA,SETL,SETS
为一个通用寄存器列表定义名称: RLIST
为一个协处理器的寄存器定义名称: CN
为一个协处理器定义名称: CP
为一个VFP寄存器定义名称: DN,SN
为一个FPA浮点寄存器定义名称: FN
1)GBLA,GBLL,GBLS
全局变量声明,作用范围是包含该变量的源程序。
GBLA variable ;声明全局算术变量
GBLL variable ;声明全局逻辑变量
GBLS variable ;声明全局字符串变量
示例:
GBLL codedbg
codedbg SETL {TRUE} ;设置变量为TRUE
2)LCLA,LCLL,LCLS
局部变量声明,用于宏定义的体中。
示例:
MACRO
SENDDAT $dat
LCLA bitno
...
bitno SETA 8
...
MEND
3),SETA,SETL,SETS
变量赋值伪指令。
示例:
GBLS ErrStr
...
ErrStr SETS "No,semaphone"
...
4),RLIST
为通用寄存器列表定义名称。
示例:
LoReg RLIST {R0-R7}
...
STMFD SP!,LoReg
5),CN
定义协处理器的寄存器。
MemSet CN 1
6),CP
定义协处理器。
DivRun CN 5
7),DN,SN
定义VFP的寄存器。
cdn DN 1 ;将VFP双精度寄存器1的名称定义为cdn
rex SN 3 ;将VFP单精度寄存器3的名称定义为rex
8),FN
定义FPA浮点寄存器。
ibq FN 1 ;将浮点寄存器1的名称定义为ibq
2,数据定义伪指令
数据定义伪指令用于数据表定义、文字池定义、数据空间分配等。
1)LTORG
用于声明一个文字池。
2)MAP
用于定义一个结构化的内存表的首地址。
3)FIELD
定义结构化内存表中的数据域。
MAP,FIELD仅仅定义数据结构,并不实际分配内存单元。
示例:
MAP 0x40003000 ;内存表的首地址为0x40003000
count1 FIELD 4
count2 FIELD 4
LDR R1,count1 ;R1 <- [0x40003000+0x00]
STR R1,count2 ;将R1的值传送到[0x40003000+0x04]
4)SPACE
用于分配一块内存单元,并用0初始化。
5)DCB
分配一段字节内存单元。
6)DCD,DCDU
DCD和DCDU用于分配一段字内存单元,但前者要字对齐,后者不需要。
7)DCDO
8)DCFD,DCFDU
9)DCFS,DCFSU
10)DCI
11)DCQ,DCQU
12)DCW,DCWU
3,报告伪指令
报告伪指令用于汇编报告指示。
1)ASSERT
用于断言错误。
ASSERT Top<>Temp ;断言Top不等于Temp
2)INFO
3)OPT
4)TTL,SUBT
4,汇编控制伪指令
汇编控制伪指令用于条件汇编、宏定义、重复汇编控制等。
IF,ELSE,ENDIF---条件汇编控制
MACRO,MEND---宏定义
WHILE,WEND---重复汇编
5,杂项伪指令
段定义,入口点设置,包含文件,标号导出,引入声明等。
ALIGN
AREA
CODE16和CODE32 指令集定义
END
ENTRY
EQU
EXPORT和GLORBAL 声明一个符号可以被其他文件引用
IMPORT和EXTERN 声明一个外部符号
GET和INCLUDE 包含文件
INCBIN
KEEP
NOFP
REQUIRE
PEQUIRE8和PRESERVE8 堆栈8字节对准
RN
ROUT
6,ARM伪指令
ADR,ADRL,LDR,NOP,LDFD,LDFS
ARM汇编伪指 相关文章:
- ARM汇编中伪指令的介绍(11-28)
- ARM汇编伪指令介绍(11-28)
- ARM汇编----伪指令LTORG(11-27)
- ARM·汇编伪指令(11-24)
- ARM汇编伪指令 宏的用法详解(11-23)
- ARM学习手札之汇编伪指令(11-22)