RESB,RESW,RESD,RESQ在NASM中分配多少字节?

use*_*761 7 x86 assembly nasm

DB 分配1个字节.

DW 分配2个字节.

DD 分配4个字节.

DQ 分配8个字节.

所以我假设:

RESB 1 分配1个字节.

RESW 1 分配2个字节.

RESD 1 分配4个字节.

RESQ 1 分配8个字节.

我对么?


文件并没有太多发言权:

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

RESB,RESW,RESD,RESQ,REST,RESO,RESY和RESZ设计用于模块的BSS部分:它们声明未初始化的存储空间.每个操作数采用一个操作数,即字节数,字数,双字数或任何要保留的值.如2.2.7节所述,NASM不支持通过编写DW来保留未初始化空间的MASM/TASM语法?或类似的东西:这就是它的作用.RESB类型伪指令的操作数是一个关键表达式:参见3.8节.

例如:

缓冲区:resb 64; 保留64个字节

wordvar:resw 1; 保留一个字

realarray resq 10; 十个实际的阵列

ymmval:resy 1; 一个YMM注册

zmmvals:resz 32; 32个ZMM寄存器

Pet*_*des 5

我对么?

是.

大小后缀在整个NASM中是一致的,for d*res*.它们将字节与xword的x86指令助记符后缀相匹配.(例如psubd使用打包的dword元素).

甚至还有一个使用o(oct-word)的指令助记符: cqo.

y和z大小后缀明显匹配ymm和zmm寄存器大小,即使指令助记符现在是VBROADCASTI32X8因为AVX512屏蔽粒度.