tword,oword和yword操作数的大小是多少?

Dan*_*ker 22 assembly nasm cpu-word word-size yasm

什么是大小tword,oword以及yword操作数,如使用NASM/YASM手册?在相关的说明中,这些名称是否存在技巧或潜在的想法?有没有一种方法可以为更大的字大小赋予逻辑名称?

我知道,虽然字大小可以系统之间是不同的,一个NASM word是2个字节,dword是两倍(4个字节),qword是一个四字(8个字节),但是...是tword一个三重字(6个字节)?而对于owordyword我甚至不能想象的一个似是而非的含义.

请注意,这可能是一个简单的问题,但我找不到答案.在NASM和YASM手册这些尺寸没有解释,甚至没有在DQ,DT,DY,RESQ,REST,RESY伪指令.我读到MASM使用类似系统的地方,但也找不到任何东西.


编辑:根据答案,这是完整的列表:

  • 1个字节(8位): ,,byteDBRESB
  • 2个字节(16位): ,,wordDWRESW
  • 4个字节(32位): ,,dwordDDRESD
  • 8个字节(64位): ,,qwordDQRESQ
  • 10个字节(80位): ,,twordDTREST
  • 16个字节(128位): ,oword,DO,,RESODDQRESDQ
  • 32个字节(256位): ,,ywordDYRESY
  • 64个字节(512位): ,,zwordDZRESZ

Rus*_*ove 15

看看TFS,它看起来像:

  • 'oword'/'DO'是"word"的8倍(o表示o),与dqword("double-quad")同义; 这将是128位,对应于SSE向量寄存器的大小.
  • 'tword'/'DT'是80位(T en字节为T),是Intel x87浮点寄存器的完整大小.
  • 'yword'/'DY'是256位,并且Y可能是英特尔AVX扩展中256位向量寄存器的YMM名称的助记符.
  • 'zword'/'DZ'是512位,Z是英特尔AVX-512扩展中512位向量寄存器的ZMM名称.

所以,不完全是一个逻辑命名约定.


Cir*_*四事件 5

我用两种NASM方法检查了它:源代码和经验.

源代码

来源:http://repo.or.cz/w/nasm.git

然后:

git grep -C2 tword
Run Code Online (Sandbox Code Playgroud)

我们堕落:

switch (size) {
case 1:
    return "byte";
case 2:
    return "word";
case 4:
    return "dword";
case 8:
    return "qword";
case 10:
    return "tword";
case 16:
    return "oword";
case 32:
    return "yword";
case 64:
    return "zword";
default:
    return "???";
}
Run Code Online (Sandbox Code Playgroud)

经验

git log -pgit tag --contains告诉我zword2.11中添加了,因为我在2.10并且懒惰,我会省略那个.

在我们的.asm档案中:

section .bss
resb1 resb 1
resw1 resw 1
resq1 resq 1
rest1 rest 1
reso1 reso 1
resy1 resy 1
; Just to read the objdump better.
resb2 resb 1
Run Code Online (Sandbox Code Playgroud)

然后编译并:

objdump -D -j .bss main.o
Run Code Online (Sandbox Code Playgroud)

得到:

00000000 <resb1>:
    ...

00000001 <resw1>:
    ...

00000003 <resd1>:
3:  00 00                   add    %al,(%eax)
    ...

00000007 <resq1>:
    ...

0000000f <rest1>:
    ...

00000019 <reso1>:
    ...

00000029 <resy1>:
    ...

00000049 <resb2>:
    ...
Run Code Online (Sandbox Code Playgroud)

如果我们考虑每个职位之间的差异,我们会得到与以前相同的结论.

zword menemonic

对于ZMMAVX-512添加的寄存器:https://en.wikipedia.org/wiki/AVX-512

我想知道英特尔将在字母表的字母结束时做什么.