NASB中RESB,RESW,RESD,RESQ分配了多少字节? [重复]

问题描述 投票:9回答:1

[DB分配1字节的块。

[DW分配2字节的块。

[DD分配4字节的块。

[DQ分配8字节的块。

所以我认为:

[RESB 1分配1个字节。

[RESW 1分配2个字节。

[RESD 1分配4个字节。

[RESQ 1分配8个字节。

我正确吗?


documentation不多说:

3.2.2 RESB和朋友:声明未初始化的数据

RESB,RESW,RESD,RESQ,REST,RESO,RESY和RESZ被设计为 在模块的BSS部分中使用:它们声明未初始化 储存空间。每个都采用一个操作数,即 字节,字,双字或任何保留字。如本节所述 2.2.7,NASM不支持通过编写DW?保留未初始化空间的MASM / TASM语法。或类似的东西:这就是它 相反。 RESB型伪指令的操作数是 批判性表达:请参见3.8节。

例如:

buffer:resb 64;保留64个字节

wordvar:resw 1;保留一个字

realarray resq 10;十个实数的数组

ymmval:resy 1;一个YMM寄存器

zmmvals:resz 32; 32个ZMM寄存器

assembly x86 nasm
1个回答
6
投票

我正确吗?

是。

大小后缀在整个NASM中对于d*res*是一致的。它们将x86指令助记符后缀与字节到qword相匹配。 (例如psubd适用于打包的dword元素。

甚至还有使用o(八字)的指令助记符:cqo

y和z大小的后缀显然与ymm和zmm寄存器的大小匹配,即使由于AVX512屏蔽粒度,指令助记符现在类似于cqo

© www.soinside.com 2019 - 2024. All rights reserved.