在ARM汇编程序中,有如下几种伪指令
*符号界说伪指令
*数据界说伪指令
*汇编操控伪指令
*信息陈述伪指令
*宏指令以及其他伪指令
【符号界说伪指令】
界说局部变量LCLA,LCLL,LCLS
界说全局变量GBLA,GBLL,GBLS
对变量赋值SETA,SETL,SETS
【数据界说伪指令】
DCB
DCW/DCWU
DCD/DCDU
DCQ/DCDU
DCFS/DCFSU
DCFD/DCFDU
SPACE
FIELD
MAP
*DCB 表达式 用于分配一片接连的字节
*DCW/DCWU 表达式 用于分配一片接连的半字
*DCD/DCDU 表达式 用于分配一篇接连的字
*DCQ/DCQU 表达式 用于分配接连的8个字节
*DCFD/DCFDU 表达式 用于为双精度浮点数分配一片接连的字存储单元
*DCFS/DCFSU 表达式 用于为单精度浮点数分配一片接连的字存储单元
*SPACE 表达式 用于分配一片接连的存储区域并初始化为0,表达式是要分配的字节数
*MAP FILED
MAP 界说一个结构化的内存表的首地址
[MAP 0x100, R0] 首地址0x100+R0
FILED 界说一个结构化内存表中的数据域
[MAP 0x30000000
【汇编操控伪指令】
*MACRO MEND 宏名
*IF···ELSE···ENDIF [ | ]
*WHILE····WEND
*NEXIT 从宏中退出
【一些其他的伪指令】
*ASSERT 逻辑表达式
有必要满意这一条件才能够进行编译
*ALIGN [表达式[,偏移量]]
AREA Init, CODE, READONLY, ALIGN=3
*AREA 段名 特点
DATA 数据段 默许READWRITE
CODE 代码段 默许READONLY
*NOINIT 内存单元初始化0
*ALIGN
*COMMON 通用段(不包括数据段和代码段)
*ENTRY
*END
*EQU (NUM EQU 100)(相当于c言语中的#define)
*EXPORT 声明一个全局变量
*RN 给寄存器改名字
temp RN R0
*GET/INCLUDE (相当于c言语中的include)
*INCBIN 文件名 (这个指令待程序中再做考虑)
INCBIN 2440test.bin
*NOP
【关于标签····】
【关于标号····】
【c/c++以及汇编言语的混合编程】
运用内嵌汇编器后,能够在c/c++源程序中直接运用大部分的ARM指令和Thumb指令
在ARM c言语程序中运用关键词_asm来标识一段汇编指令
_asm
{
intstruction[; instrucition]
····
[instruction]
}