ARM的伪指令总结


1)ENTRY
         设置程序默认入口点,一个程序可有多个ENTRY,但一个源文件最多只有一个ENTRY。

2)EQU
          EQU伪操用于将数字常量、基于寄存器的值和程序中的标号定义为一个字符名称。语法格式:
          symbol EQU expression
          其中,expression可以是一个寄存器的名字,也可是由程序标号、常量或者32位的地址常量组成的表达式。symbol是EQU伪操作所定义的字符名称。示例:COUNT EQU 0X1FFF

3)EXTERN/IMPORT
           IMPORT(EXTERN功能完全相同)用于声明在其他模块中定义但需要在本文件中使用的符号。EXTERN声明的变量必须是在其他模块中用EXPORT或GLOBAL声明过的。

4)IMPORT class (symbol, symbol ...)
           其中,class为变量的类型,可以为ARM、CODE16、CODE32、DATA、CONST、THUMB;symbol为所声明的变量名。

5)EXPORT/GLOBAL
           EXPORT(GLOBAL功能完全相同)用于声明在本文件中定义但能在其他模块中使用的变量,相当于定义了一个全局变量。语法格式:
           EXPORT symbol, symbol...
            其中,symbol为所声明的变量名。

6)AREA
          AREA用于定义一个代码段或数据段,ARM汇编程序设计采用分段式设计,一个ARM源程序至少有一个代码段,大的程序会有若干个代码段和数据段。语法格式:
           AREA segment-name, class-name, attributes ,...
           其中,segment-name为所定义段的名称;class-name为所定义段的类型名称,可以为系统类型(CODE, CONST, DATA, ERAM)或用户定义类型;attributes为段的属性。

7)END
           END用于标记汇编文件的结束行,即标号后的代码不作处理。

8)Code[16|32]

          伪操作用于选择当前汇编指令的指令集。参数16选择Thumb指令集,参数32 选择ARM指令集。

       语法格式:

       code[16|32]

9)align

       align伪指令通过添加补丁字节使当前位置满足一定的对齐方式。

      语法格式:

       align {expr{,offset}}

       其中:expr为数字表达式,用于指定对齐的方式。取值为2的n次幂,如1、2、4、8等,不能为0。若没有expr,则默认为字对齐方式。

       Offset为数字表达式。当前位置对齐到下面形式的地址处:offset+n*expr

      示例:

            align 4,3             ;字对齐

相关内容