在NASM/YASM manual中,
我知道字长可能因系统而异,NASM的
请注意,这可能是一个简单的问题,但我找不到答案。在NASM和YASM手册中,这些大小没有被解释,甚至在DQ、DT、DY、RESQ、REST、RESY伪指令中也没有。我在某处读到MASM使用了类似的系统,但也找不到相关信息。
tword
、oword
和yword
操作数的大小是多少?此外,这些名称有什么技巧或基本思想吗?是否有一种方法可以给更大的字长命名逻辑名称?我知道字长可能因系统而异,NASM的
word
是2个字节,dword
是双倍(4个字节),qword
是四倍(8个字节),但是... tword
是三倍字长(6个字节)吗?至于oword
和yword
,我甚至想不出一个合理的含义。请注意,这可能是一个简单的问题,但我找不到答案。在NASM和YASM手册中,这些大小没有被解释,甚至在DQ、DT、DY、RESQ、REST、RESY伪指令中也没有。我在某处读到MASM使用了类似的系统,但也找不到相关信息。
编辑:根据答案,这是完整的列表:
- 1字节(8位):
byte
,DB
,RESB
- 2字节(16位):
word
,DW
,RESW
- 4字节(32位):
dword
,DD
,RESD
- 8字节(64位):
qword
,DQ
,RESQ
- 10字节(80位):
tword
,DT
,REST
- 16字节(128位):
oword
,DO
,RESO
,DDQ
,RESDQ
- 32字节(256位):
yword
,DY
,RESY
- 64字节(512位):
zword
,DZ
,RESZ
.intel_syntax
对于内存操作数大小覆盖使用类似的命名约定,例如vmovdqa ymmword ptr [rdi],ymm0
。通常只在反汇编输出中看到这种情况;我想不出一个矢量指令的内存操作数宽度不明确的情况,因为至少有一个操作数始终是寄存器。) - Peter Cordeso
是英特尔用于cqo
的,但向量指令使用dq
而不是o
(例如punpckhqdq
)。请参见我在最近这个问题的重复中的答案。 - Peter Cordes