在ARM处理器汇编语言程序设计里,有一些特殊的指令助记符
这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊的指令助记符为伪指令,它们所完成的操作称为伪操作
伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了
在ARM处理器的汇编程序中,大体有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令及其他伪指令
伪操作符可以分为以下几类
1)数据定义伪操作符数据定义伪操作符主要包括LTORG、MAP、DCB、FIELD、SPACE、DCQ、DCW等,主要用于数据表定义、文字池定义、数据空间分配等
常用的有DCB/DCQ/DCW分配一段字节/双字/字内存单元,并且将它们初始化
2)符号定义伪操作符符号定义伪操作符包括GBLA、GBLL、GBLS、LCLA、CN、CP、DN、FN、RLIST、SETA等,用于定义ARM汇编程序的变量,对变量进行赋值,以及定义寄存器名称等
其中用于全局变量声明的GBLA、GBLL、GBLS和局部变量声明的LCAL、LCLL、LCLS伪指令较为常用
3)报告伪操作符报告伪操作符包括ASSERT、INFO、OPT等,主要用于汇编报告等
其中比较常用的有ASSERT,表示断言错误
4)条件汇编伪操作符条件汇编伪操作符包括IF、ELSE、ENDIF、WHIL、WEND、MACRO、MEND等,主要用于条件汇编、宏定义、重复汇编控制等操作
5)杂项伪操作符杂项伪操作符包括AREA、ALIGN、ENTRY、EQU、EXPORT、GLOBAL、IMPORT、CODE16、CODE32等
这些伪指令在汇编程序设计中较为常用,如段定义、入口点设置等伪指令
常用的伪指令主要有以下几条
AREA:用来定义段;ALIGN:用来设定边界对齐;CODE16/CODE32: