[〜#〜] nasm [〜#〜] /で使用される、tword
、oword
、およびyword
オペランドのサイズはいくつですか。 YASMマニュアル ?また、関連するメモとして、これらの名前にトリックや根本的なアイデアはありますか?より大きなWordサイズに論理名を付ける方法はありますか?
ワードサイズはシステムによって異なる場合がありますが、NASM Word
は2バイト、dword
はその2倍(4バイト)、qword
はクアッドワード(8バイト)です。 )、しかし...はtword
aトリプルワード(6バイト)ですか?そして、oword
とyword
については、もっともらしい意味すら考えられません。
簡単な質問かもしれませんが、答えが見つかりませんでした。 NASMおよびYASMのマニュアルでは、これらのサイズは、DQ
、DT
、DY
、RESQ
、REST
でも説明されていません。 、RESY
疑似命令。 MASMが同様のシステムを使用していることをどこかで読みましたが、その上でも何も見つかりませんでした。
編集:答えに基づいて、これは完全なリストです:
byte
、DB
、RESB
Word
、DW
、RESW
dword
、DD
、RESD
qword
、DQ
、RESQ
tword
、DT
、REST
oword
、DO
、RESO
、DDQ
、RESDQ
yword
、DY
、RESY
zword
、DZ
、RESZ
nasm source を見ると、次のようになります。
したがって、これは厳密には論理的な命名規則ではありません。 「成長したばかり」。
NASMの2つのアプローチでそれをチェックしました:ソースコードと経験的です。
ソースコード
ソース: 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
AVX-512によって追加されたZMM
レジスタの場合: https://en.wikipedia.org/wiki/AVX-512
アルファベットの文字が終わったらIntelはどうするのだろうか。