嵌入式系统开发与应用常量编译控制伪操作伪操作作用语法格式.byte分配一段字节内存单元,并用expr初始化。byte expr , expr)...hword/.short分配一段半字内存单元,并用expr初始化。hwordexpr,expr...ascii定义字符串expr(非零结束符)。.asciexpri,expr..定义字符串expr(以/0为结束符)。asciz/.string.ascizexprtexprfloat/.single定义一个32bitIEEE浮点数exprfloat expr t, expr,.double定义64bitIEEE浮点数expr。doubleexpr,expr分配一段字内存单元,并用expr初始化word/.longword expr t,expr../intfillfillrepeat ,size,分配一段字节内存单元,用size长度value填充repeat次。value!分配一段字节内存单元,并用0填充内存。.zero.zero size分配一段内存单元,用value将内存单元初始化。spacel.skipspacesizevalue
常量编译控制伪操作 伪操作 语法格式 作 用 .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 /.int .word expr {,expr} . 分配一段字内存单元,并用expr初始化。 .fill .fill repeat {,size}{, value} 分配一段字节内存单元,用size长度value填充repeat 次。 .zero .zero size 分配一段字节内存单元,并用0填充内存。 .space/.skip .space size {, value} 分配一段内存单元,用value将内存单元初始化
嵌入式系统开发与应用汇编程序代码控制伪操作作用伪操作语法格式定义域中包含的段。.section.sectionexpr.text将操作符开始的代码编译到代码段或代码段子段。.text (subsection).data将操作符开始的数据编译到数据段或数据段子段。.datasubsection).bss将变量存放到.bss段或.bss段的子段。bss(subsection).code16/.thumb.code16表明当前汇编指令的指令集选择Thumb指令集。thumb.code32.code32/.arm表明当前汇编指令的指令集选择ARM指令集。.armend.end标记汇编文件的结束行,即标号后的代码不作处理。include将一个源文件包含到当前源文件中。include"filename通过添加填充字节使当前位置满足一定的对齐方式。align/.balignalign(alignment)filly(,max)
汇编程序代码控制伪操作 伪操作 语法格式 作 用 .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伪操作标识宏定义的开始,.endm标识宏.macro、.exitmacroacronamem及.endmparameterf,定义的结束。用.macro及.endm定义一段代码,parameter)...称为宏定义体。exitm伪操作用于提前退出宏。.endmifdef,.elseifdefcondition当满足某条件时对一组语句进行编译,而当条及.endif件不满足时则编译另一组语句。其中else可以缺省。.elseendif
宏及条件编译控制伪操作 伪操作 语法格式 作 用 .macro 、 .exit m及.endm .macro acroname {parameter{, parameter}.} . .endm .macro伪操作标识宏定义的开始,.endm标识宏 定义的结束。用.macro及.endm定义一段代码, 称为宏定义体。.exitm伪操作用于提前退出宏。 . ifdef,.else 及.endif .ifdef condition . .else . .endif 当满足某条件时对一组语句进行编译,而当条 件不满足时则编译另一组语句。其中else可以缺 省
嵌入式系统开发与应用其他伪操作伪操作作用语法格式在汇编符号列表文件中插入一分页符。eject.ejectlist,list产生汇编列表(从list到nolist)。表示汇编列表结束处。.nolist.nolisttitle使用“heading”作为标题。.title“"heading"使用“heading"作为子标题。sbttlsbttl“heading”.Itorgltorg在当前段的当前地址(字对齐)产生一个文字池。为一个特定的寄存器定义名称。.reqregname,expr使编译时产生错误报告。err-err打印信息到标准输出。-printprint stringfailfail编译汇编文件时产生警告。expr
其他伪操作 伪操作 语法格式 作 用 .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 编译汇编文件时产生警告
嵌入式系统开发与应用5.1.4ARM汇编语言的伪指令作用伪指令语法格式ADRADR(cond)register,将基于PC或基于寄存器的地址值读取到寄存器中。小范围的地址读取。exprADRLADRL(cond)register,将基于PC或基于寄存器的地址值读取到寄存器中。中等范围的地址读取。exprLDRLDR(cond)将一个32位的立即数或者一个地址值读取到寄存register,=[expr|label-expr]器中。大范围的地址读取。NOPNOP在汇编时将被替换成ARM中的空操作
5.1.4ARM汇编语言的伪指令 伪指令 语法格式 作 用 ADR ADR {cond} register, expr 将基于PC或基于寄存器的地址值读取到寄存器中。 小范围的地址读取。 ADRL ADRL {cond} register, expr 将基于PC或基于寄存器的地址值读取到寄存器中。 中等范围的地址读取。 LDR LDR {cond} register, =[expr | label-expr] 将一个32位的立即数或者一个地址值读取到寄存 器中。大范围的地址读取。 NOP NOP 在汇编时将被替换成ARM中的空操作