【vfp精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了vfp精品源码-arm汇编伪指令 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
ADS编译环境下的伪操作和宏指令 ADS编译环境下的伪操作可分为以下几类: 符号定义(Symbol Definition)伪操作 数据定义(Data Definition)伪操作 汇编控制(Assembly Control)伪操作 信息报告(Reporting)伪操作 其他(Miscellaneous)伪操作 符号定义伪操作伪操作 语法格式 作用GBLA GBLA Variable 声明一个全局的算术变量,并将其初始化成0。
GBLL GBLL Variable 声明一个全局的逻辑变量,并将其初始化成FALSE。
GBLS GBLS Variable 声明一个全局的字符串变量,并将其初始化成空串“”。
LCLA LCLA Variable 声明一个局部的算术变量,并将其初始化成0。
LCLL LCLL Variable 声明一个局部的逻辑变量,并将其初始化成FALSE。
LCLS LCLS Variable 声明一个局部的串变量,并将其初始化成空串“”。
SETA SETA Variable expr 给一个全局或局部算术变量赋值。
SETL SETL Variable expr 给一个全局或局部逻辑变量赋值。
SETS SETS Variable expr 给一个全局或局部字符串变量赋值。
RLIST name LIST { list of 为一个通用寄存器列表定义名称。
registers}CN name CN expr 为一个协处理器的寄存器定义名称。
CP name CP expr 为一个协处理器定义名称。
DN/SN name DN/SN expr DN/SN为一个双精度/单精度的
VFP寄存器定义名称。
FN name FN expr 为一个FPA浮点寄存器定义名称。
数据定义伪操作伪操作 语法格式 作用LTORG LTORG 声明一个数据缓冲池(也称为文字池)的开始。
MAP MAP expr{,base-register} 定义一个结构化的内存表(Storage Map)的首地址。
FIELD {label} FIELD expr 定义一个结构化内存表中的数据域。
SPACE {label} SPACE expr 分配一块连续内存单元,并用0初始化。
DCB label DCB expr{,expr} 分配一段字节内存单元,并用expr初始化。
DCD/ label DCD expr , 分配一段字内存单元。
DCDU expr…DCDO {label} DCDO expr{, 分配一段字对齐的字内存单元。
expr}…DCFD/ label DCFD { U } 为双精度的浮点数分配字对齐的内存单元。
DCFDU fpliteral{,fpliteral}…DCFS/ label DCFS { U } 为单精度的浮点数分配字对齐的内存单元。
DCFSU fpliteral {,fpliteral}…DCI label DCI expr { , 在ARM代码中分配一段字对齐的内存单元 在Thumb代 expr}… 码中,分配一段半字对齐的半字内存单元。
DCQ/ label DCQ{U}{-} 分配一段以双字(8个字节)为单位的内存DCQU literal { , { - }DCW/ literal}… label DCW{U}expr{, DCW用于分配一段半字对齐的半字内存单元。
DCWU expr}… 汇编控制伪操作 伪操作 语法格式 作用IF , ELSE IF logical expression 能够根据条件把一段源代码包及ENDIF … 括在汇编语言程序内或者将其 ELSE 排除在程序之外。
… ENDIFWHILE 及 WHILE logical expression 能够根据条件重复汇编相同的WEND … 一段源代码。
WENDMACRO 、 MACRO MACRO标识宏定义的开始,MENDMEND 及 label macroname {parameter 标识宏定义的结束。
MERIT用于从MEXIT {,parameter}…} 宏中跳转出去。
用MACRO和MEND …;宏代码 定义的一段代码,称为宏定义体。
通 MEND 过宏名称来调用宏。
信息报告伪操作伪操作 语法格式 作用ASSER ASSERT logical 对汇编程序的第二遍扫描中,如果其中ASSERTT expression 中条件不成立,ASSERT伪操作将报告该错误信 息。
INFO INFO numeric- 在汇编处理过程的第一遍扫描或者第二遍扫描时 expression , string- INFO伪操作报告诊断信息。
expressionOPT OPT n 通过OPT伪操作可以在源程序中设置列表选项。
TTL TTL title 在列表文件的每一页的开头插入一个标题。
SUBT SUBT subtitle 在列表文件的每一页的开头插入一个子标题。
伪操作 语法格式 作用CODE16 CODE16 告诉汇编编译器后面的指令序列为16位的Thumb指令CODE32 CODE32 告诉汇编编译器后面的指令序列为32位的ARM指令。
name EQU expr{,type} 为数字常量、基于寄存器的值和程序中的标号(基于PC的值)定义一个字符名称EQU 类似于C语言中的#define宏定义。
AREA sectionname { , attr } { , 定义一个代码段或者数据段。
AREA attr}…ENTRY ENTRY 指定程序的入口点。
END END 告诉编译器已经到了源程序结尾。
ALIGN ALIGN {expr{,offset}} 通过添加补丁字节使当前位置满足一定的对齐方式。
EXPORT/ EXPORT symbol {〔WEAK〕} 声明一个符号可以被其他文件引用.GLOBALIMPOR IMPORT symbol {WEAK} 告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文 件中定义的,在本源文件中可能引用该符号。
TEXTERN EXTERN symbol {〔WEAK〕} 告诉编译器当前的符号不是在本源文件中定义的,而是在 其他源文件中定义的,在本源文件中可能引用该符号。
GET/ GET filename 将一个源文件包含到当前源文件中,并将被包含的文件在其当前位置进行汇编处INCLUDE 理。
INCBIN INCBIN filename 将一个文件包含到当前源文件中,被包含的文件不进行汇编处理。
KEEP KEEP{symbol} 告诉编译器将局部符号包含在目标文件的符号表中。
NOFP NOFP 禁止源程序中包含浮点运算指令。
REQUIR REQUIRE lable 指定段之间的相互依赖关系。
ERN name RN expr 为一个特定的寄存器定义名称。
ROUT name ROUT 定义局部变量的有效范围。
GNU编译环境下的伪操作和宏指令 GNU编译环境下的伪操作可分为以下几类: 常量编译控制伪操作 汇编程序代码控制伪操作 宏及条件编译控制伪操作 其他伪操作常量编译控制伪操作 : 伪操作 语法格式 作用 .byte .byte expr ,expr … 分配一段字节内存单元,并用expr初始化。
.hword/.short .hword expr ,expr … 分配一段半字内存单元,并用expr初始化。
.ascii .ascii expr ,expr … 定义字符串expr(非零结束符)。
.asciz /.string .asciz expr ,expr … 定义字符串expr(以/0为结束符)。
.float/.single .float expr ,expr … 定义一个32bit IEEE 浮点数expr。
.double .double expr ,expr … 定义64bit IEEE浮点数expr。
word/.long .word expr ,expr … 分配一段字内存单元,并用expr初始化。
/.int .fill .fill repeat ,size, 分配一段字节内存单元,用size长度value填充repeat次。
value .zero .zero size 分配一段字节内存单元,并用0填充内存。
.space/.skip .space size value 分配一段内存单元,用value将内存单元初始化。
汇编程序代码控制伪操作 伪操作 语法格式 作用.section .section expr 定义域中包含的段。
.text .text subsection 将操作符开始的代码编译到代码段或代码段子段。
.data .data subsection 将操作符开始的数据编译到数据段或数据段子段。
.bss .bss subsection 将变量存放到.bss段或.bss段的子段。
.code 16/.thumb .code 16 表明当前汇编指令的指令集选择Thumb指令集。
.thumb.code 32/.arm .code 32 表明当前汇编指令的指令集选择ARM指令集。
.arm.end .end 标记汇编文件的结束行,即标号后的代码不作处理。
.include .include “filename” 将一个源文件包含到当前源文件中。
.align/.balign .align alignment , 通过添加填充字节使当前位置满足一定的对齐方式。
fill ,max 宏及条件编译控制伪操作 伪操作 语法格式 作用.macro、. .macro acroname .macro 伪 操 作 标 识 宏 定 义 的 开exitm {parameter{, 始,.endm标识宏定义的结束。
用.macro及.endm parameter}…} 及 .endm 定 义 一 段 代 码 , 称 为 宏 定 义 … 体。
.exitm伪操作用于提前退出宏。
.endm. .ifdef condition 当满足某条件时对一组语句进行编译,ifdef,.else … 而当条件不满足时则编译另一组语句。
及.endif .else 其中else可以缺省。
… .endif 其他伪操作伪操作 语法格式 作用.eject .eject 在汇编符号列表文件中插入一分页符。
.list .list 产生汇编列表(从 .list 到 .nolist)。
.nolist .nolist 表示汇编列表结束处。
.title .title “heading” 使用“heading ”作为标题。
.sbttl .sbttl “heading” 使用“heading”作为子标题。
.ltorg .ltorg 在当前段的当前地址(字对齐)产生一个文 字池。
.req .req name,expr 为一个特定的寄存器定义名称。
.err .err 使编译时产生错误报告。
.print .print string 打印信息到标准输出。
.fail .fail expr 编译汇编文件时产生警告。
ARM汇编语言的伪指令伪指令 语法格式 作用ADR ADR{cond} 将基于PC或基于寄存器的地址值读取到 register , expr 寄存器中。
小范围的地址读取。
ADRL ADRL { cond } 将基于PC或基于寄存器的地址值读取到 register,expr 寄存器中。
中等范围的地址读取。
LDR LDR { cond } 将一个32位的立即数或者一个地址值读 register , 〔 expr 取到寄存器中。
大范围的地址读取。
label-expr〕NOP NOP 在汇编时将被替换成ARM中的空操作。