全部博文(165)
分类: LINUX
2007-04-24 17:54:28
Gun汇编的保留字不是很多书会提到的, 查找起来很不方便, 我自己整理了一下. 希望对以后有用.
.ascii “
把string当成数据插入汇编中,和armasm的DCB类似.
.ascix “
类似 .ascii , 但在每个字符串后面跟一个零字节.
.balign
对齐地址到
.byte
把一系列的字节当成数据插入汇编, 和armasm的DCB类似.
.code
按bit 位役置指令的长度. 16位是Thumb, 32位是ARM, 这和armasm的CODE16和CODE32类似.
.else
使用在.if 和 .endif 之间. 和armasmr ELSE类似.
.end
标记一个汇编文件的结束. 这个通常被省略.
.endif
标志着条件汇编代码块的结束, 和armasm的ENDIF类似
.endm
结束一上宏定义. 和armasm的MEND类似
.endr
结束一个循环, 和armasm的WEND类似
.equ
设置一个标号(symbol)的值, 和armasm的EQU类似
.err
以一个错误导致汇编的结束.
.exitm
从当前宠定义体中提前退出. 和armasm的MEXIT类似
.global
给标号
.hword
把一系列的16位数当成数据插入汇编, 和armasm 的DCW类似
.if < logical_expression>
定义一个条件块, 以.endif 结束. 和armasmr IF类似
.ifdef
如果
.ifndef
如果
.include “
包含指定的源文件. 和armasmr INCLUDE或者和C的#INCLUDE类似
.irp {,
开启一个循环的代码块,块中每个value列表的value 执行一次, 块以一个 .endr 来标记结束. 在循环的代码块中, 使用 \来替代value列表中的value.
.macro
定义一个含有k个参数的名为
.macro SHIFTLEFT a, b
.if \b<0
MOV \a, \a, ASR #-\b
.exitm
.endif
MOV \a, \a, LSL #\b
.endm
.rept
按照指定的次数重复执行一个代码块, 这个块以 .endr 来标记结束
为一个寄存器取个名字, tkg armasm的RN类似, 但这里右边的寄存器不能只给出寄存器号, 必须给出具体的寄存器, 如 acc .req r0.
.section
开始一个新的代码段或者数据段, 通常, 代码段称为 .text, 一个经过初始化的数据段称为 .data, 一个没有初始化的数据段称为 .bss . 它们都有默认的标记(flag), 连接器识别它们的默认名字, 和armasm的AREA类似,
ELF格式文件的
标记 含义
a 可分配段
w 可写段
x 可执行段
.set
设置一个变量的值, 和armasm的SETA类似
.space
生成给定数量的字节, 如果指定了
.word
把一系列的32位字当成数据插入汇编, 和armasm的DCD类似