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寄存器
我试图使用nasm
( nasm -o file input.asm
) 编译汇编代码,并在以下代码片段的第 2 行抛出错误:
mov rsi, 0x400200
movdqu xmm0,xmmword [rsi]
nop
Run Code Online (Sandbox Code Playgroud)
我不确定是否可以使用 128 位寄存器的指令进行编译nasm
,但是在涉及 128 位寄存器的情况下,是否有其他方法可以使用 nasm 进行编译?
所以我试图找出的大小zword
,并yword
当我偶然发现这是很有帮助的线程其中有各种规模的名单,但有一两件事让我感到困惑。它在编辑中说 atword
是 10 个字节,但这对我来说没有意义。一个字是两个字节,所以一个tword
字应该是 10 个字,也就是 20 个字节,不是吗?我发现更奇怪的是 anoword
确实是 8 个字/16 字节,所以 anoword
实际上比 a 大tword
。这种奇怪的命名选择有什么解释吗?