文档详情

ARM体系结构与编程:第5章 ARM汇编语言程序设计.ppt

发布:2025-03-27约9.77千字共64页下载文档
文本预览下载声明

指令集选择伪操作指示汇编器将代码编译成32位的ARM代码还是16位的Thumb代码。这类伪操作包括以下几种。ARM或CODE32用于告诉汇编器后面的指令序列为32位的ARM指令。THUMB用于告诉汇编器后面的指令是32位的Thumb-2指令还是16位的Thumb指令。CODE16用于告诉汇编器后面的指令序列为16位的Thumb指令。其他伪指令-AREAAREA:AREA段名属性,…… 说明:AREA用于定义一个代码段、数据段或者特定属性的段。如果段名以数字开头,那么该段名需用“|”字符括起来,如|7wolf|,用C的编译器产生的代码一般也用“|”括起来。属性部分表示该代码段/数据段的相关属性,多个属性可以用“,”分隔。常见属性如下:?DATA:定义数据段。?CODE:定义代码段。READONLY:表示本段为只读。READWRITE:表示本段可读写。ALIGN=表达式:对齐方式为2表达式次方,例如:表达式=3,则对齐方式为8字节对齐。表达式的取值范围为0——31。COMMON属性:定义一个通用段,这个段不包含用户代码和数据。编程时使用AREA伪操作将程序分成多个ELF格式的段。一般情况下,数据段和代码段是分离的。大的程序应该分成多个不同的代码段和数据段。一个汇编程序至少包含一个段。AREA Init,CODE,READONLY;伪操作定义了一个代码段,段名为Init,属性为只读其他伪指令-AREAEND说明:“END”告诉编译器已经到了源程序的结尾。每一个汇编源文件必须以END结束。如果汇编文件通过伪操作GET指定了一个“父文件(parentfile)”,当汇编器遇到END伪操作时将返回到“父文件”继续汇编。AREA Init,CODE,READONLY……END ;使用END伪操作指定应用程序的结尾。其他伪指令-ENDENTRY说明:ENTRY用于指定汇编程序的入口。在一个完整的汇编程序中至少要有一个ENTRY,程序中也可以有多个,此时,程序的真正入口点可在链接时指定,但在一个源文件里最多只能有一个ENTRY或者没有ENTRY。AREA Init,CODE,READONLYENTRY ;指定应用程序的入口点……其他伪指令-ENTRY其他伪指令EQUEQU:名称EQU 表达式[,类型]说明:EQU用于将程序中的数字常量、标号、基于寄存器的值赋予一个等效的名称,这一点类似于C语言中的#define,可用“*”代替EQU。如果表达式为32位的常量,我们可以指定表达式的数据类型,类型域可以有以下三种:CODE16/CODE32/DATATest EQU 50 ;定义标号Test的值为50Addr EQU 0x55,CODE32 ;定义Addr的值为0x55,且该处为32位的ARM指令。其他伪指令-EXPORTEXPORT:EXPORT标号[,WEAK]说明:EXPORT在程序中声明一个全局标号,该标号可以被其他的文件中的代码引用。用户也可以用GLOBAL代替EXPORT。[,WEAK]可选项声明其他文件有同名的标号,则该同名标号优先于该标号被引用。AREA Init,CODE,READONLYEXPORT Stest ;声明一个可全局引用的标号Stest……END 其他伪指令-EXTERNEXTERN:EXTERN标号[,WEAK]说明:EXTERN告诉编译器所使用的标号要在当前源文件中引用,但该标号是在其他的源文件中定义的。与IMPORT不同的是,如果当前源文件实际上没有引用该标号,该标号就不会被加入到当前文件的符号表中。[,WEAK]选项意义同IMPORT。AREA Init,CODE,READONLYEXTERN Main ;通知编译器当前文件要引用标号Main,但Main在其他源文件中定义……END 其他伪指令-GET/INCLUDEGE

显示全部
相似文档