GNU Assembler 伪指令

.align boundary [,filler][,maximum]

在当前位置插入filler所指定的值并且地址对齐与指定的边界。这3个值都是绝对数。如果filler没有指定,则数据段中默认填充0,指令段中默认填充noop操作码。如果指定maximum,表示最多填充filler的数量,如果这个的值加上当前地址大于当前第一个边界,则只填充到第一个边界。如果小于当前第一个边界,则忽略这个伪指令。
filler参数和maximum参数是可选的,如果指定maximum而不指定filler,使用二个逗号直接指定maximum。例子:.align 32,,100
各个系统上在使用这个伪指令的时候可能由不兼容的现象。例如,在一些系统上,指定地址8字节对齐使用“.align 8”的格式。而另外的一些系统上,指定地址8字节对齐则使用“.align 3”的格式,这个格式的含义是地址值的最后0的最少数量。相同的语法也用于“.balign”和“p2align”伪指令。

.ascii [string][,string…]

声明一个或多个可以引用的ASCII字符串。字符串不带“\0”字符串结束符。
.asclz [string][,sting…]

声明一个或多个可以引用的ASCII字符串。字符串带“\0”字符串结束符。
.balign boundary [,filler][,maximum]

类似与“.align”。但filler为8位的值
.balignl boundary [,filler][,maximum]

类似与“.balign”,但filler是32位的值
.balignw boundary [,filler][,maximum]

类似与“.balign”,但filler是16位的值
.byte expression [,expression]

为每个表达式分配一个字节,每个表达式的值赋值到分配的字节中。
.comm symbol, length

在当前位置分配一块未初始化的内存,名字为“symbol”,大小为“Length”。如果一个模块中定义了多于一个的名字相同的符号,则合并他们。如果他们的大小不一样,则使用最大的那个。
在ELF系统中,第三层优化参数将指定对齐。在HPPA系统中,这个伪指令的语法是:
“symbol .comm, length”。
.data subsection

什么一个数据段的子段,subsection是一个绝对值,它的默认值为0。
.def name

一个debugging信息块的开始,name是标签符号名,将被插入到COFF格式的二进制文件中。这个信息块结束于一个“endef”伪指令。可以参考“.dim”“.scl”“.tag”“.val”“.type”“.size”。
.desc symbol, value

给一个符号赋值。这个值必须是一个绝对值的表达式。这个伪操作不为COFF格式输出。
.dim

这个伪指令只能使用在“.def”和“.endef”对之间。编译器用它使符号表(symbol table)包含辅助信息。这个伪指令只在COFF的二进制格式中有效。
.double value [,value…]
在当前位置的内存中存储一个或多个浮点数。浮点数的表达方式,大小和范围,各个平台各不相同。可参考“.float”。
.eject

插入一个分页符。
.else

参考“.if”。
.endef

参考“.def”。
.endif

参考“.if”。
.equ symbol, value

为符号赋值,这个值可以是绝对值也可以是相对值。“.equ”可以对一个符号使用多次,使用一次,则改变一个符号的值。在HPPA系统上,这个伪操作的语法是“symbol .equ value”。
这个伪操作和“.set”伪操作相同。可参考“.equiv”。
.equiv symbol, value

这个伪操作类似与“.equ”。唯一不同的地方就是如果对一个已经定义的符号做操作则发出一个错误信息。
.err

这个伪指令产生一个错误,如果使用-Z选项则禁止这类信息。它一般用于条件代码中指定一个错误。下面这个例子如果没有定义BLACKLINE符号则发出一个错误:
.ifndef BLACKLINE
.err
.endif
.fill repeat, size, value

填充一段内存,这段内存的内容重复填充为value,每个位置填充size字节数,这段内存有repeat块连续的同样内容的填充区域。如果size大于8,则强制为8。
.float value [,value…]

同“.double”伪指令。
.global symbol

这个symbol,必须已经定义,这个伪操作将这个symbol作为全局符号暴露给连接器(linker),这个符号可以是定义的一个独立的模块。在HPPA系统上也可以使用作用相同的“.EXPORT”伪指令。
.globl

同“.global”
.hword value

在当前位置存储一个16位的数。和“.short”,“.word”相同。这些伪操作和平台相关的。
.if expression

条件编译伪指令,expression表达式的值非0,则编译下面的代码。条件编译的代码在“.endif”终止。“.else”伪指令下面的代码在expression表达式的值为false时编译。“.ifdef”,“ifndef”和“.ifnotdef”测试符号是否已经定义。
.ifdef symbol

条件编译伪指令,符号如果已经定义则为真。
.ifndef symbol

条件编译伪指令,符号如果没有定义则为真。
.ifnotdef symbol

条件编译伪指令,符号如果没有定义则为真。
.include “filename”

插入指定文件名的文件到当前位置并且编译, -I选项指定搜索的目录。
.int value [,value…]

在当前位置存储一个整数。字节数和字节顺序取决与不同的平台。
.irp tag,str[,str…]

位于“.irp”和“.endr”之间的代码将根据list中的值各执行一遍。值代替跟在反斜线后面的tag。例子
.irp tag,esp,ebp.eax
subl $1,%\tag
.endr
相同于:
subl $1,%esp
subl $1,%ebp
subl $1,%eax
可以参考“.macro”,“.rept”和“.irpc”伪指令。
.irpc charlist

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值