什么是GNUgas中的零?

在以下编译器输出中:

a:
        .long   4
b:
        .byte   99
x:
        .zero   4
c:
        .byte   12
f:
        .zero   4

.zero指令是什么意思?它似乎是唯一未在gas directives. 只是从上面看,long是四个字节,.byte是一个字节,我猜是四个字节的.zero零(或指令后面的任何数字)。那是对的吗?

如果是这样,为什么不这样做.long 0。这是否将其放在不同的部分或其他内容中?

回答

不,它不会把它放在不同的部分,它只是把它放在你当前创建的任何部分中。

就其与 的关系而言.long,后者实际上取决于架构。它可能是不同的大小和/或字节序。请注意,字节序对于零值可能无关紧要,但大小可能无关紧要。

.zero另一方面,该指令是.skip(并且.space某些体系结构上)的别名,并且无论体系结构如何都会生成请求的字节数。

记还留着的是,作为一个别名.skip,你也可以提供价值你想使用的字节数(默认为零),但意义不大像做:

.zero 4, 32

生成四个空格:-)

  • @MartinRosenau: you could put `.byte 0` inside a `.rept` (https://sourceware.org/binutils/docs/as/Rept.html)

以上是什么是GNUgas中的零?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>