特殊符号 —- 对应指令 —- 意义 —- 示例
^—- MAP—-界说结构化内存表—-MAP 4096;内存表首地址为4096
#—-FIELD—-界说内存表中的数据,结合MAP指令运用—-
MAP 4096
STACKSVC FIELD 256;界说从4096开端的256字节为SVC的仓库空间。
%—-SPACE—-分配一块内存,并用“0”初始化—-DataStruc SPACE 280;分配280字节内存并初始化
[|] —-IF ELSE ENDIF—-条件编译,有挑选的确认需求编译的代码IF,ELSE,ENDIF,能够嵌套运用—-
IF 逻辑表达式
指令或伪指令
ELSE
指令或伪指令
ENDIF
别的还有符号: $
假如在串变量前有一个$,则在汇编时编译器将用该串变量的数值替代该串变量,如:
GBLS STR1
GBLS STR2
STR1 SETS “pen.”
STR2 SETS “This is a $STR1″
编译后的成果是STR2的值为This is a pen.
假如$后是数字变量(与串变量区别),在汇编时编译器将该数字变量的数值转换成十六进制的串,然后用该十六进制的串替代$后的数字变量。
假如$后是逻辑变量,在汇编时编译器将该逻辑变量替换成它的取值(T或许F)。
假如程序中需求$,则用$$来表明,编译器将不进行变量替换。
GBLS STR1
GBLS B
GBLA NUM1
NUM1 SETA 14
B SETS “CHANGED”
STR1 SETS “abc$$B$NUM1”
编译成果STR1的值为:abcB0000000E。
留意:在两个竖线“|”之间的$并不表明进行变量替换,但假如“|”是在双引号内,则将进行变量替换。
运用点”.”来表明变量名的完毕。
GBLS STR1
GBLS STR2
STR1 SETS “AAA”
STR2 SETS “bbb$STR1.CCC”
编译成果STR2值为bbbAAACCC
还有一个破例:“%”
“%”除了表明SPACE外,还能够在部分标号中运用,详细意思见伪指令ROUT的运用示例:
◆ROUT
ROUT伪指令界说部分标号的有用规模,伪指令格局如下:{name} ROUT。其间 name 所界说的效果规模的称号。
当没有运用ROUT伪指令时,部分标号的效果规模为地点段;ROUT伪令的效果规模在本ROUT伪指令和下一个ROUT伪指令之间(指同一段中的ROUT伪指令)
伪指令运用举例如下:
ROUT伪指令界说部分标号的有用规模,伪指令格局如下:{name} ROUT。其间 name 所界说的效果规模的称号。
当没有运用ROUT伪指令时,部分标号的效果规模为地点段;ROUT伪令的效果规模在本ROUT伪指令和下一个ROUT伪指令之间(指同一段中的ROUT伪指令)
伪指令运用举例如下:
routineA ROUT ;界说部分标号的有用规模,称号为routineA
……
3routineA ;routineA规模内的部分标号3
3routineA ;routineA规模内的部分标号3
……
BEQ %4routineA ;若条件建立,跳转到routineA规模内的部分标号 4
BEQ %4routineA ;若条件建立,跳转到routineA规模内的部分标号 4
……
BEQ %3routineA ;若条件建立,跳转到routineA范Iq内的部分标号 3
BEQ %3routineA ;若条件建立,跳转到routineA范Iq内的部分标号 3
……
4routineA ;routineA规模内的部分标号4
4routineA ;routineA规模内的部分标号4
……
otherstuff ROUT ;界说新的部分标号的有用规模
otherstuff ROUT ;界说新的部分标号的有用规模
———————————————————————-
ADS中ARM汇编语言程序设计的符号引证标准
Error:Undefined symbols ….
找到引证符号的汇编源文件和界说符号的汇编源文件仔细检查和比照,符号没有写错,并且在引证符号之前的确把符号运用IMPORT引进了进来。百思不得其解时,忽然想到在界说符号的文件中没有对符号EXPORT。十分初级的过错。
在汇编语言程序设计中,养成杰出的编程习气,构成杰出的编码风格是十分重要的。这儿仅依据个人习气和领会略谈一下运用ADS进行ARM汇编语言程序设计时的符号引证规矩,主要是对不同性质的符号运用不同的引证方法:
(1)关于寄存器地址界说以及通用的常量或符号界说(运用EQU界说),能够按类界说在一个.s汇编文件中,在要运用这些界说的源文件中可运用INCLUDE将该.s汇编文件包括进来。
这样做的优点是:防止很多的IMPORT和EXPORT伪句子,增强代码的可读性,别的,关于多个源文件要运用许多相同寄存器地址界说或常量界说的场合,这样做能够大大紧缩代码尺度(经笔者实践证明)。
(2)关于代码段的地址标号或函数进口地址标号(函数名),在代码段或函数的界说处运用EXPORT输出;在要调用该代码段或函数的源文件中运用IMPORT将符号引进。
一定要确保IMPORT和EXPORT是成对运用的,若不EXPORT则IMPORT无效,若只EXPORT而不IMPORT也无法引证符号。