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
生成四个空格:-)
在以下编译器输出中:
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
生成四个空格:-)