GNU gas 中的 .zero 是什么?

What is .zero in GNU gas?

在以下编译器输出中:

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

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

如果是这样,为什么不干脆 .long 0。这会把它放在不同的部分吗?

不,它不会将它放在不同的部分,它只是将它内嵌在您当前创建的任何部分中。

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

另一方面,.zero 指令是 .skip 的别名(以及 某些 架构上的 .space),并且生成请求的字节数 ,不管 架构如何。

还请记住,作为 .skip 的别名,您还可以提供要使用的对于字节(它默认为零)但是做这样的事情没什么意义:

.zero 4, 32

生成四个空格:-)