24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

• rel16 および rel32 - アセンブル結果の命令と 同じ コ ー ド ・ セグメ ン ト 内の相対ア ド レ ス。 記号 rel16 は、 オペラン ド ・ サイズ属性が 16 ビ ッ ト である命令に適用 さ れ、 rel32 はオペラン ド ・ サイズ属性が 32 ビ ッ ト であ る命令に適用される。 • ptr16:16 および ptr16:32 - 一般的に命令のコード・セグメントとは異なるコード・セ グメント内のfar ポインタ。 16:16 の表記法は、 ポ イ ン タの値が 2 つの部分からなっ ている こ と を示す。 コ ロ ンの左側の値は、 16 ビットのセレクタ、 すなわちコード ・ セグメント ・レジスタに送られる値である。 右側の値はデスティネーション・セグ メン ト内のオフセッ ト に対応する。 記号ptr16:16 は命令のオペラン ド ・ サイズ属性 が 16 ビ ッ ト であ る場合に使用 さ れ、 記号 ptr16:32 は オペラ ン ド ・ サ イ ズ属性が 32 ビ ッ ト である場合に使用 さ れる。 • r8 - 汎用バイ ト ・ レ ジ ス タ AL、 CL、 DL、 BL、 AH、 CH、 DH、 BH の中の 1 つ。 • r16 - 汎用ワ ー ド ・ レ ジ ス タ AX、 CX、 DX、 BX、 SP、 BP、 SI、 DI の中の 1 つ。 • r32 - 汎用ダブルワ ー ド ・ レ ジ ス タ EAX、 ECX、 EDX、 EBX、 ESP、 EBP、 ESI、 EDI の中の 1 つ。 • imm8 - 即値バイ ト 値。 記号 imm8 は -128 から +127 ま での符号付き数値であ る。 imm8 が ワ ー ド ま たはダブルワ ー ド のオペラ ン ド と 結合 さ れる命令については、 即値 は符号拡張されてワ ー ド ま たはダブルワ ー ド を構成する。 その場合は、 ワ ー ド の上 位バイ ト は即値の最上位ビ ッ ト で埋められる。 • imm16 - オペラン ド ・ サイズ属性が 16 ビ ッ ト である命令に使用 さ れる即値ワ ー ド 値。 こ れは -32,768 から +32,767 までの数値である。 • imm32 - オペラン ド ・ サイズ属性が 32 ビ ッ ト である命令に使用 さ れる即値ダブル ワード値。 これには -2,147,483,648 から +2,147,483,647 までの数値を使用できる。 • r/m8 - 汎用バイ ト ・ レ ジ ス タ (AL、 BL、 CL、 DL、 AH、 BH、 CH、 および DH) か、 メモリからのバイ ト かの内容であるバイ ト ・ オペラン ド。 • r/m16 - オペラン ド ・ サイズ属性が 16 ビッ トである命令に使用される汎用ワード ・ レジスタ・オペランドまたはメモリ ・オペランド。 汎用ワード ・レジスタは、 AX、 BX、 CX、 DX、 SP、 BP、 SI、 DI である。 メモ リ の内容は、 実効アド レスの計算に よって与えられるアドレスにある。 • r/m32 - オペラン ド ・ サイズ属性が 32 ビ ッ ト である命令に使用 さ れる汎用ダブル ワード ・レジスタ・オペランドまたはメモリ・オペランド。 汎用ダブルワード ・レ ジスタは、 EAX、 EBX、 ECX、 EDX、 ESP、 EBP、 ESI、 EDI である。 メモ リ の内容 は、 実効アドレスの計算によって与えられるアドレスにある。 • m - 16 または 32 ビットのメモリ ・オペランド。 • m8 - 通常、 変数名 ま たは配列名 と して表されるが、 DS:(E)SI または ES:(E)DI レジス タによってアド レス指定されるバイト ・ メモリ ・ オペランド。 これはスト リング命 令およ び XLAT 命令に対してのみ使用される。 • m16 - 通常、 変数名ま たは配列名 と して表されるが、 DS:(E)SI または ES:(E)DI レジ スタによってアドレス指定されるワー ド ・ メモリ ・ オペランド。 これはスト リング 命令に対してのみ使用 さ れる。 • m32 - 通常、 変数名ま たは配列名 と して表されるが、 DS:(E)SI または ES:(E)DI レジ スタによってアドレス指定されるダブルワー ド ・ メモリ ・ オペランド。 これはスト リング命令に対してのみ使用される。 • m64 - クワッ ドワード ・メモリ ・オペランド。 これはCMPXCHG8B 命令に対しての み使用される。 • m16:16、m16:32 - 2 つの数値からなる far ポインタを内容とするメモリ ・ オペラン ド 。 コ ロ ンの左側の数値は ポ イ ン タ のセグ メ ン ト ・ セ レ ク タ に対応し、 右側の数値 は ポ イ ン タ のオ フ セ ッ ト に対応す る。 3:374 第 3 巻 : IA-32 基本命令リファレンス

1.2.1.3 説明欄 1.2.1.4 説明 1.2.2 操作 • m16&32、m16&16、m32&32 - サイズがアンパーサン ド記号の左側と右側に示され るデータ項目の対からなるメモリ ・ オペラン ド。 すべてのメモリ ・ アド レス指定 モー ドが可能である。 m16&16 と m32&32 オペラン ド は BOUND 命令で使用され、 配列イ ンデ ッ ク スの上限 と 下限を内容 と す る オペラ ン ド を提供す る。 m16&32 オペ ランドは LIDT と LGDT で使用 さ れ、 対応する GDTR および IDTR レジスタのlimit フィールドにロードするワード、 ベース・フィールドにロードするダブルワードを 提供す る。 • moffs8、moffs16、moffs32 - MOV 命令の一部のバ リ エー シ ョ ンに よ っ て使用される バイ ト、 ワー ド、 またはダブルワー ド型のシンプル ・ メモリ変数 ( メモリ ・ オフ セッ ト )。 実際のアドレスは、 セグメン ト ・ ベースからのシンプル ・ オフセッ ト に よって与えられる。 命令にはModR/M バイ ト は使用されない。 moffs の次の数値はセ グメン ト のサイズであり、 これは命令のアドレス ・ サイズ属性によ って決まる。 • Sreg - セグメン ト ・ レジスタ。 セグメン ト ・ レジスタのビ ッ ト割り当ては、 ES=0、 CS=1、 SS=2、 DS=3、 FS=4、 GS=5。 • m32real、m64real、m80real - ( それぞれ ) 単精度、 倍精度、 お よ び拡張浮動小数点 数のメモ リ ・ オペラ ン ド である。 • m16int、m32int、m64int - ( それぞれ ) ワード、 ショート、 ロング整数のメモリ ・オ ペラン ドである。 • ST または ST(0) - FPU レ ジ ス タ ・ ス タ ッ ク の一番上の要素。 • ST(i) - FPU レジスタ ・ スタックの一番上から i 番目の要素 (i = 0 ~ 7)。 • mm - MMX テクノロジ ・ レジスタ。 64 ビット MMX テクノロジ ・ レジスタ MM0 か ら MM7 まで。 • mm/m32 - MMX テクノロジ ・ レジスタの下位32 ビッ トまたは32 ビッ トのメモリ ・ オペラン ド。 64 ビッ トのMMX テクノロジ ・ レジスタは MM0 から MM7 まで。 メ モリの内容は、 実効アドレス計算によって与えられるアドレスにある。 • mm/m64 - MMX テクノロジ ・ レジスタまたは 64 ビッ トのメモリ ・オペランド。 64 ビッ ト MMX テクノロジ ・ レジスタは MM0 から MM7 まで。 メモリの内容は実効ア ドレス計算によって与えられるアドレスにある。 「命令」 欄の次の 「説明」 欄では、 各種の命令フ ォ ーマ ッ ト について簡単に説明する。 命 令のフ ォ ーマ ッ ト の下の 「説明」 およ び 「操作」 の項には、 命令の動作の詳細が記載して ある。 「説明」 の項では、 命令の目的と 必要なオペラ ン ド について説明する。 さ ら に、 命令のフ ラグに対する影響についても説明する。 「操作」 の項には、 命令のアルゴ リ ズム に関す る説明を記載す る ( 疑似 コ ー ド で記述 )。 こ の疑似コ ー ド は、 Algol または Pascal 言語に似た表記法を使用してい る。 アルゴ リ ズム は、 以下の要素か ら な っ ている。 • コメントは記号の対"(*" および"*)" で囲まれる。 • 複合文は、 それぞれ、 if 文では IF、 THEN、 ELSE、 FI、 do 文では DO と OD、 また は case 文では CASE ... OF と ESAC などのキーワー ドで囲まれる。 第 3 巻 : IA-32 基本命令リファレンス 3:375

1.2.1.3 説明欄<br />

1.2.1.4 説明<br />

1.2.2 操作<br />

• m16&32、m16&16、m32&32 - サイズがアンパーサン ド記号の左側と右側に示され<br />

るデータ項目の対からなるメモリ ・ オペラン ド。 すべてのメモリ ・ アド レス指定<br />

モー ドが可能である。 m16&16 と m32&32 オペラン ド は BOUND 命令で使用され、<br />

配列イ ンデ ッ ク スの上限 と 下限を内容 と す る オペラ ン ド を提供す る。 m16&32 オペ<br />

ランドは LIDT と LGDT で使用 さ れ、 対応する GDTR および IDTR レジスタのlimit<br />

フィールドにロードするワード、 ベース・フィールドにロードするダブルワードを<br />

提供す る。<br />

• moffs8、moffs16、moffs32 - MOV 命令の一部のバ リ エー シ ョ ンに よ っ て使用される<br />

バイ ト、 ワー ド、 またはダブルワー ド型のシンプル ・ メモリ変数 ( メモリ ・ オフ<br />

セッ ト )。 実際のアドレスは、 セグメン ト ・ ベースからのシンプル ・ オフセッ ト に<br />

よって与えられる。 命令にはModR/M バイ ト は使用されない。 moffs の次の数値はセ<br />

グメン ト のサイズであり、 これは命令のアドレス ・ サイズ属性によ って決まる。<br />

• Sreg - セグメン ト ・ レジスタ。 セグメン ト ・ レジスタのビ ッ ト割り当ては、 ES=0、<br />

CS=1、 SS=2、 DS=3、 FS=4、 GS=5。<br />

• m32real、m64real、m80real - ( それぞれ ) 単精度、 倍精度、 お よ び拡張浮動小数点<br />

数のメモ リ ・ オペラ ン ド である。<br />

• m16int、m32int、m64int - ( それぞれ ) ワード、 ショート、 ロング整数のメモリ ・オ<br />

ペラン ドである。<br />

• ST または ST(0) - FPU レ ジ ス タ ・ ス タ ッ ク の一番上の要素。<br />

• ST(i) - FPU レジスタ ・ スタックの一番上から i 番目の要素 (i = 0 ~ 7)。<br />

• mm - MMX テクノロジ ・ レジスタ。 64 ビット MMX テクノロジ ・ レジスタ MM0 か<br />

ら MM7 まで。<br />

• mm/m32 - MMX テクノロジ ・ レジスタの下位32 ビッ トまたは32 ビッ トのメモリ ・<br />

オペラン ド。 64 ビッ トのMMX テクノロジ ・ レジスタは MM0 から MM7 まで。 メ<br />

モリの内容は、 実効アドレス計算によって与えられるアドレスにある。<br />

• mm/m64 - MMX テクノロジ ・ レジスタまたは 64 ビッ トのメモリ ・オペランド。 64<br />

ビッ ト MMX テクノロジ ・ レジスタは MM0 から MM7 まで。 メモリの内容は実効ア<br />

ドレス計算によって与えられるアドレスにある。<br />

「命令」 欄の次の 「説明」 欄では、 各種の命令フ ォ ーマ ッ ト について簡単に説明する。 命<br />

令のフ ォ ーマ ッ ト の下の 「説明」 およ び 「操作」 の項には、 命令の動作の詳細が記載して<br />

ある。<br />

「説明」 の項では、 命令の目的と 必要なオペラ ン ド について説明する。 さ ら に、 命令のフ<br />

ラグに対する影響についても説明する。<br />

「操作」 の項には、 命令のアルゴ リ ズム に関す る説明を記載す る ( 疑似 コ ー ド で記述 )。 こ<br />

の疑似コ ー ド は、 Algol または Pascal 言語に似た表記法を使用してい る。 アルゴ リ ズム は、<br />

以下の要素か ら な っ ている。<br />

• コメントは記号の対"(*" および"*)" で囲まれる。<br />

• 複合文は、 それぞれ、 if 文では IF、 THEN、 ELSE、 FI、 do 文では DO と OD、 また<br />

は case 文では CASE ... OF と ESAC などのキーワー ドで囲まれる。<br />

第 3 巻 : IA-32 基本命令リファレンス 3:375

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!