Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在NASM中RESB、RESW、RESD、RESQ分配多少字节?_Assembly_X86_Nasm - Fatal编程技术网

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

Assembly 在NASM中RESB、RESW、RESD、RESQ分配多少字节?,assembly,x86,nasm,Assembly,X86,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部分:它们声明未初始化 存储空间。每个都接受一个操作数,即 字节、字、双字或任何要保

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节

例如:

缓冲区:resb64;保留64字节

wordvar:resw1;保留一句话

realarray resq 10;十实数组

ymmval:resy1;一个YMM寄存器

zmmvals:resz32;32 ZMM寄存器

我说得对吗

对于
d*
res*
,大小后缀在整个NASM中是一致的。它们匹配x86指令助记符后缀,表示字节到qword。(例如,
psubd
与压缩dword元素一起工作)

甚至还有一种指令助记符使用
o
(oct-word):


y和z大小后缀显然与ymm和zmm寄存器大小相匹配,尽管由于AVX512掩蔽粒度,指令助记符现在类似。

是的,您是正确的。这些文件对我来说似乎很清楚。你需要想想你写了什么
RESB 64
明确表示“保留64个长度为1字节的内容”@David Hoelzer是的,我注意到了,但文档只清楚地说明了
RESB
而没有说明其他内容。我不确定文档中有什么不清楚的地方。你不知道他们说“单词”是什么意思吗?这一节是为了在阅读后阅读,因为它使用了相同的类型后缀。嗯,或多或少是一致的。英特尔偶尔会想出一些愚蠢而令人困惑的术语,比如
dq
(双四元组)单词而不是单字
rest
保留十个字节,而不是一个五字。尽管如此,我还是主张检查列表和/或调试器以查看本例中的实际结果。@doynax:这就是为什么我说它将助记符匹配到qword,因为
movdqa/u
movntdq/dqa
,以及有趣的名称
punpckhqdq
(将qword解包到dqword),等等。或
cmpxchg16b
。英特尔的文档从来没有将
m80
x87操作数称为TBYTE或penta字或诸如此类的东西,如果他们命名的话,他们只会说80位。或例如。也与以下内容相关:/