什么是大小tword
, oword
和yword
操作数,如使用NASM / YASM手册 ? 而与此相关的,是有没有什么窍门或潜在的想法,这些名字? 是否有通过更大的字长规定的逻辑名称的方式?
我知道,虽然字大小可以系统之间是不同的,一个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
源代码和经验:我已经与NASM两种方法检查它。
源代码
源在: http://repo.or.cz/w/nasm.git
然后:
git grep -C2 tword
我们制住 :
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 "???";
}
经验
git log -p
和git tag --contains
告诉我, zword
在2.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
然后编译:
objdump -D -j .bss main.o
得到:
00000000 <resb1>:
...
00000001 <resw1>:
...
00000003 <resd1>:
3: 00 00 add %al,(%eax)
...
00000007 <resq1>:
...
0000000f <rest1>:
...
00000019 <reso1>:
...
00000029 <resy1>:
...
00000049 <resb2>:
...
如果我们把每个位置之间的差异,我们得出同样的结论前。
zword menemonic
对于ZMM
通过AVX-512加入寄存器: https://en.wikipedia.org/wiki/AVX-512
我不知道英特尔将尽的时候,字母结束的字母。