web-dev-qa-db-ja.com

ワード、ワード、yワードのオペランドのサイズはどれくらいですか?

[〜#〜] nasm [〜#〜] /で使用される、twordoword、およびywordオペランドのサイズはいくつですか。 YASMマニュアル ?また、関連するメモとして、これらの名前にトリックや根本的なアイデアはありますか?より大きなWordサイズに論理名を付ける方法はありますか?

ワードサイズはシステムによって異なる場合がありますが、NASM Wordは2バイト、dwordはその2倍(4バイト)、qwordはクアッドワード(8バイト)です。 )、しかし...はtword aトリプルワード(6バイト)ですか?そして、owordywordについては、もっともらしい意味すら考えられません。

簡単な質問かもしれませんが、答えが見つかりませんでした。 NASMおよびYASMのマニュアルでは、これらのサイズは、DQDTDYRESQRESTでも説明されていません。 、RESY疑似命令。 MASMが同様のシステムを使用していることをどこかで読みましたが、その上でも何も見つかりませんでした。


編集:答えに基づいて、これは完全なリストです:

  • 1バイト(8ビット):byteDBRESB
  • 2バイト(16ビット):WordDWRESW
  • 4バイト(32ビット):dwordDDRESD
  • 8バイト(64ビット):qwordDQRESQ
  • 10バイト(80ビット):twordDTREST
  • 16バイト(128ビット):owordDORESODDQRESDQ
  • 32バイト(256ビット):ywordDYRESY
  • 64バイト(512ビット):zwordDZRESZ

nasm source を見ると、次のようになります。

  • 'oword'/'DO'は "Word"の8倍の大きさ( "octoword"のO)、dqword( "double-クワッド ");これは128ビットで、SSEベクトルレジスタのサイズに対応します。
  • 'tword'/'DT'は80ビット( "tenバイト"の場合はT)、Intelx87浮動小数点レジスタのフルサイズです。
  • 'yword'/'DY'は256ビットであり、YはおそらくIntelAVX拡張機能の256ビットベクトルレジスタのYMM名のニーモニックです。
  • 「zword」/「DZ」は512ビットで、ZはIntelAVX-512拡張機能の512ビットベクトルレジスタのZMM名を表します。

したがって、これは厳密には論理的な命名規則ではありません。 「成長したばかり」。

15

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 --containszwordが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はどうするのだろうか。