嵌入式系统开发与应用数据定义伪操作伪操作作用语法格式LTORGLTORG声明一个数据缓冲池(也称为文字池)的开始。MAPMAP expr (,base-register)定义一个结构化的内存表(StorageMap)的首地址。FIELD定义一个结构化内存表中的数据域。(label) FIELD expr(label)SPACE exprSPACE分配一块连续内存单元,并用0初始化。DCB(label)DCB expr(,expr)分配一段字节内存单元,并用expr初始化。DCD(label)DCD分配一段字内存单元。expr1,DCDUexpr!(label)DCDODCDOexprL,分配一段字对齐的字内存单元。expr)DCFDLUDCFDI(label)为双精度的浮点数分配字对齐的内存单元。DCFDUfpliteralfpliteral)SU)DCFS/(label)DCFS为单精度的浮点数分配字对齐的内存单元。DCFSUfpliteralfpliteral)元DCI(label)DCI在ARM代码中分配一段字对齐的内存单元:在Thumb代exprexpr)码中,分配一段半字对齐的半字内存单元。DCQIDCOU-分配一段以双字(8个字节)为单位的内存labelDCQUliteral,-literal)DCWI(label)DCWUexpr,DCW用于分配一段半字对齐的半字内存单元。DCWUexpr)
数据定义伪操作 伪操作 语法格式 作 用 LTORG LTORG 声明一个数据缓冲池(也称为文字池)的开始。 MAP MAP expr{,base-register} 定义一个结构化的内存表(StorageMap)的首地址。 FIELD {label} FIELD expr 定义一个结构化内存表中的数据域。 SPACE {label} SPACE expr 分配一块连续内存单元,并用0初始化。 DCB {label} DCB expr{,expr} 分配一段字节内存单元,并用expr初始化。 DCD/ DCDU {label} DCD expr { , expr}. 分配一段字内存单元。 DCDO {label} DCDO expr{, expr}. 分配一段字对齐的字内存单元。 DCFD/ DCFDU {label} DCFD { U } fpliteral{,fpliteral}. 为双精度的浮点数分配字对齐的内存单元。 DCFS/ DCFSU {label} DCFS { U } fpliteral {,fpliteral}. 为单精度的浮点数分配字对齐的内存单元。 DCI {label} DCI expr { , expr}. 在ARM代码中分配一段字对齐的内存单元; 在Thumb代 码中,分配一段半字对齐的半字内存单元。 DCQ/ DCQU {label} DCQ{U}{﹣} literal{,{﹣}literal}. 分配一段以双字(8个字节)为单位的内存 DCW/ DCWU {label} DCW{U}expr{, expr}. DCW用于分配一段半字对齐的半字内存单元
嵌入式系统开发与应用汇编控制伪操作作用伪操作语法格式IF,ELSE及IFlogical expression能够根据条件把一段源代码包括在汇编ENDIF语言程序内或者将其排除在程序之外。(ELSEENDIF及WHILEWHILElogical expression能够根据条件重复汇编相同的一段源代码。WENDWENDMACROMACROMACRO标识宏定义的开始,MEND标及MEND($label)sparameter ,识宏定义的结束。MERIT用于从宏中跳macronameMEXITSparameter).转出去。用MACRO和MEND定义的一:宏代码段代码,称为宏定义体。通过宏名称来MEND调用宏
汇编控制伪操作 伪操作 语法格式 作 用 IF ,ELSE及 ENDIF IF logical expression . {ELSE .} ENDIF 能够根据条件把一段源代码包括在汇编 语言程序内或者将其排除在程序之外。 WHILE 及 WEND WHILE logical expression . WEND 能够根据条件重复汇编相同的一段源代 码。 MACRO 、 MEND 及 MEXIT MACRO {$label} macroname {$parameter{, $parameter}.} . ;宏代码 MEND MACRO标识宏定义的开始,MEND标 识宏定义的结束。MERIT用于从宏中跳 转出去。用MACRO和MEND定义的一 段代码,称为宏定义体。通过宏名称来 调用宏
嵌入式系统开发与应用信息报告伪操作作用伪操作语法格式对汇编程序的第二遍扫描中,如果其中ASSERT中条件ASSERTASSERTlogical expression不成立,ASSERT伪操作将报告该错误信息。INFOINFOnumeric-expression,在汇编处理过程的第一遍扫描或者第二遍扫描时INFO伪操作报告诊断信息。string-expressionOPTOPTn通过OPT伪操作可以在源程序中设置列表选项。TTLTTLtitle在列表文件的每一页的开头插入一个标题SUBTSUBT subtitle在列表文件的每一页的开头插入一个子标题
信息报告伪操作 伪操作 语法格式 作 用 ASSERT ASSERT logical expression 对汇编程序的第二遍扫描中,如果其中ASSERT中条件 不成立,ASSERT伪操作将报告该错误信息。 INFO INFO numeric-expression, string-expression 在汇编处理过程的第一遍扫描或者第二遍扫描时INFO伪 操作报告诊断信息。 OPT OPT n 通过OPT伪操作可以在源程序中设置列表选项。 TTL TTL title 在列表文件的每一页的开头插入一个标题。 SUBT SUBT subtitle 在列表文件的每一页的开头插入一个子标题
嵌入式系统开发与应用其他伪操作伪操作作用语法格式CODE16CODE16告诉汇编编译器后面的指令序列为16位的Thumb指令CODE32CODE32告诉汇编编译器后面的指令序列为32位的ARM指令。EQUname EQU expr (,type)为数字常量、基于寄存器的值和程序中的标号(基于PC的值)定义一个字符名欢AREAAREAsectionname(attr),定义一个代码段或者数据段。attr.ENTRYENTRY指定程序的入口点。ENDEND告诉编译器已经到了源程序结尾,ALIGN通过添加补丁字节使当前位置满足一定的对齐方式。ALIGN(expr(offset)EXPORTIEXPORTsymbol([WEAK]】声明一个符号可以被其他文件引用,相当于声明了一个全局变量。GLOBALIMPORTIMPORT symbol ([WEAK])告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的在本源文件中可能引用该符号。EXTERNEXTERNsymbol((WEAK))告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号。GETIGETfilename将一个源文件包含到当前源文件中,并将被包含的文件在其当前位置进行汇编INCLUDE处理。INCBININCBIN filename将一个文件包含到当前源文件中,被包含的文件不进行汇编处理。KEEPKEEP(symbol)告诉编译器将局部符号包含在目标文件的符号表中。NOFPNOFP禁止源程序中包含浮点运算指令。REQUIREREQUIRE lable指定段之间的相互依赖关系。RN为一个特定的寄存器定义名称。nameRN exprROUT定义局部变量的有效范围。(name)ROUT
其他伪操作 伪操作 语法格式 作 用 CODE16 CODE16 告诉汇编编译器后面的指令序列为16位的Thumb指令 CODE32 CODE32 告诉汇编编译器后面的指令序列为32位的ARM指令。 EQU name EQU expr{,type} 为数字常量、基于寄存器的值和程序中的标号(基于PC的值)定义一个字符名 称。 AREA AREA sectionname { ,attr} {, attr}. 定义一个代码段或者数据段。 ENTRY ENTRY 指定程序的入口点。 END END 告诉编译器已经到了源程序结尾。 ALIGN ALIGN {expr{,offset}} 通过添加补丁字节使当前位置满足一定的对齐方式。 EXPORT/ GLOBAL EXPORT symbol {[WEAK]} 声明一个符号可以被其他文件引用,相当于声明了一个全局变量。 IMPORT IMPORT symbol {[WEAK]} 告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的, 在本源文件中可能引用该符号。 EXTERN EXTERN symbol {〔WEAK〕} 告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的, 在本源文件中可能引用该符号。 GET/ INCLUDE GET filename 将一个源文件包含到当前源文件中,并将被包含的文件在其当前位置进行汇编 处理。 INCBIN INCBIN filename 将一个文件包含到当前源文件中,被包含的文件不进行汇编处理。 KEEP KEEP{symbol} 告诉编译器将局部符号包含在目标文件的符号表中。 NOFP NOFP 禁止源程序中包含浮点运算指令。 REQUIRE REQUIRE lable 指定段之间的相互依赖关系。 RN name RN expr 为一个特定的寄存器定义名称。 ROUT {name} ROUT 定义局部变量的有效范围
嵌入式系统开发与应用5.1.3GNU编译环境下的伪操作和宏指令GNU编译环境下的伪操作可分为以下几类常量编译控制伪操作汇编程序代码控制伪操作宏及条件编译控制伪操作其他伪操作
5.1.3 GNU编译环境下的伪操作和宏指令 GNU编译环境下的伪操作可分为以下几类: 常量编译控制伪操作 汇编程序代码控制伪操作 宏及条件编译控制伪操作 其他伪操作