24531904_j
24531904_j 24531904_j
• 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
- Seite 335 und 336: メジャー ・ オペコード 0
- Seite 337 und 338: 4.5.1.3 IP-Relative Call B3 4.5.1.4
- Seite 339 und 340: 間接分岐予測命令は、 表
- Seite 341 und 342: 表 4-60. オペコード 0 のそ
- Seite 343 und 344: 4.6.1.1 Floating-point Multiply Add
- Seite 345 und 346: 4.6.4 近似 4.6.4.1 Floating-point
- Seite 347 und 348: 4.6.6 マージと論理 F9 4.6.7
- Seite 349 und 350: 4.6.9 その他の F ユニット
- Seite 351 und 352: 4.7.2 ロング型即値 64 移動
- Seite 353 und 354: 4.8 即値の生成 表 4-74 は、
- Seite 355 und 356: 0 リソースと依存関係のセ
- Seite 357 und 358: は、 シ リ アル化の要件
- Seite 359 und 360: 表 5-2. リソース別に編成
- Seite 361 und 362: 表 5-2. リソース別に編成
- Seite 363 und 364: 表 5-2. リソース別に編成
- Seite 365 und 366: 表 5-2. リソース別に編成
- Seite 367 und 368: 表 5-3. リソース別に編成
- Seite 369 und 370: 表 5-3. リソース別に編成
- Seite 371 und 372: 5.3.5 依存関係表で参照さ
- Seite 373 und 374: 5.4 サポートに関する表 表
- Seite 375 und 376: 表 5-5. 命令クラス ( 続き )
- Seite 377 und 378: 表 5-5. 命令クラス ( 続き )
- Seite 379 und 380: 表 5-5. 命令クラス ( 続き )
- Seite 381: 第 II 部 : IA-32命令セット
- Seite 384 und 385: ま たは浮動小数点命令を
- Seite 388 und 389: • レ ジ ス タ名は暗黙に
- Seite 390 und 391: 図 1-1. BIT[EAX,21] のビット
- Seite 392 und 393: 1.2.7 仮想 8086 モード例外
- Seite 394 und 395: AAD ─ ASCII Adjust AX Before Divi
- Seite 396 und 397: AAS ─ ASCII Adjust AL After Subtr
- Seite 398 und 399: ADC ─ Add with Carry ( 続き )
- Seite 400 und 401: ADD ─ Add ( 続き ) 保護モー
- Seite 402 und 403: AND ─ Logical AND ( 続き ) 保
- Seite 404 und 405: ARPL ─ Adjust RPL Field of Segmen
- Seite 406 und 407: BOUND ─ Check Array Index Against
- Seite 408 und 409: BSF ─ Bit Scan Forward ( 続き )
- Seite 410 und 411: BSR ─ Bit Scan Reverse ( 続き )
- Seite 412 und 413: BT ─ Bit Test オペコード 命
- Seite 414 und 415: BTC ─ Bit Test and Complement オ
- Seite 416 und 417: BTR ─ Bit Test and Reset オペ
- Seite 418 und 419: BTS ─ Bit Test and Set オペコ
- Seite 420 und 421: CALL ─ Call Procedure オペコ
- Seite 422 und 423: CALL ─ Call Procedure ( 続き )
- Seite 424 und 425: CALL ─ Call Procedure ( 続き )
- Seite 426 und 427: CALL ─ Call Procedure ( 続き )
- Seite 428 und 429: CALL ─ Call Procedure ( 続き )
- Seite 430 und 431: CBW/CWDE ─ Convert Byte to Word/C
- Seite 432 und 433: CLC ─ Clear Carry Flag オペコ
- Seite 434 und 435: CLI ─ Clear Interrupt Flag オペ
• rel16 および rel32 - アセンブル結果の命令と 同じ コ ー ド ・ セグメ ン ト 内の相対ア ド レ<br />
ス。 記号 rel16 は、 オペラン ド ・ サイズ属性が 16 ビ ッ ト である命令に適用 さ れ、<br />
rel32 はオペラン ド ・ サイズ属性が 32 ビ ッ ト であ る命令に適用される。<br />
• ptr16:16 および ptr16:32 - 一般的に命令のコード・セグメントとは異なるコード・セ<br />
グメント内のfar ポインタ。 16:16 の表記法は、 ポ イ ン タの値が 2 つの部分からなっ<br />
ている こ と を示す。 コ ロ ンの左側の値は、 16 ビットのセレクタ、 すなわちコード ・<br />
セグメント ・レジスタに送られる値である。 右側の値はデスティネーション・セグ<br />
メン ト内のオフセッ ト に対応する。 記号ptr16:16 は命令のオペラン ド ・ サイズ属性<br />
が 16 ビ ッ ト であ る場合に使用 さ れ、 記号 ptr16:32 は オペラ ン ド ・ サ イ ズ属性が 32<br />
ビ ッ ト である場合に使用 さ れる。<br />
• r8 - 汎用バイ ト ・ レ ジ ス タ AL、 CL、 DL、 BL、 AH、 CH、 DH、 BH の中の 1 つ。<br />
• r16 - 汎用ワ ー ド ・ レ ジ ス タ AX、 CX、 DX、 BX、 SP、 BP、 SI、 DI の中の 1 つ。<br />
• r32 - 汎用ダブルワ ー ド ・ レ ジ ス タ EAX、 ECX、 EDX、 EBX、 ESP、 EBP、 ESI、 EDI<br />
の中の 1 つ。<br />
• imm8 - 即値バイ ト 値。 記号 imm8 は -128 から +127 ま での符号付き数値であ る。<br />
imm8 が ワ ー ド ま たはダブルワ ー ド のオペラ ン ド と 結合 さ れる命令については、 即値<br />
は符号拡張されてワ ー ド ま たはダブルワ ー ド を構成する。 その場合は、 ワ ー ド の上<br />
位バイ ト は即値の最上位ビ ッ ト で埋められる。<br />
• imm16 - オペラン ド ・ サイズ属性が 16 ビ ッ ト である命令に使用 さ れる即値ワ ー ド<br />
値。 こ れは -32,768 から +32,767 までの数値である。<br />
• imm32 - オペラン ド ・ サイズ属性が 32 ビ ッ ト である命令に使用 さ れる即値ダブル<br />
ワード値。 これには -2,147,483,648 から +2,147,483,647 までの数値を使用できる。<br />
• r/m8 - 汎用バイ ト ・ レ ジ ス タ (AL、 BL、 CL、 DL、 AH、 BH、 CH、 および DH) か、<br />
メモリからのバイ ト かの内容であるバイ ト ・ オペラン ド。<br />
• r/m16 - オペラン ド ・ サイズ属性が 16 ビッ トである命令に使用される汎用ワード ・<br />
レジスタ・オペランドまたはメモリ ・オペランド。 汎用ワード ・レジスタは、 AX、<br />
BX、 CX、 DX、 SP、 BP、 SI、 DI である。 メモ リ の内容は、 実効アド レスの計算に<br />
よって与えられるアドレスにある。<br />
• r/m32 - オペラン ド ・ サイズ属性が 32 ビ ッ ト である命令に使用 さ れる汎用ダブル<br />
ワード ・レジスタ・オペランドまたはメモリ・オペランド。 汎用ダブルワード ・レ<br />
ジスタは、 EAX、 EBX、 ECX、 EDX、 ESP、 EBP、 ESI、 EDI である。 メモ リ の内容<br />
は、 実効アドレスの計算によって与えられるアドレスにある。<br />
• m - 16 または 32 ビットのメモリ ・オペランド。<br />
• m8 - 通常、 変数名 ま たは配列名 と して表されるが、 DS:(E)SI または ES:(E)DI レジス<br />
タによってアド レス指定されるバイト ・ メモリ ・ オペランド。 これはスト リング命<br />
令およ び XLAT 命令に対してのみ使用される。<br />
• m16 - 通常、 変数名ま たは配列名 と して表されるが、 DS:(E)SI または ES:(E)DI レジ<br />
スタによってアドレス指定されるワー ド ・ メモリ ・ オペランド。 これはスト リング<br />
命令に対してのみ使用 さ れる。<br />
• m32 - 通常、 変数名ま たは配列名 と して表されるが、 DS:(E)SI または ES:(E)DI レジ<br />
スタによってアドレス指定されるダブルワー ド ・ メモリ ・ オペランド。 これはスト<br />
リング命令に対してのみ使用される。<br />
• m64 - クワッ ドワード ・メモリ ・オペランド。 これはCMPXCHG8B 命令に対しての<br />
み使用される。<br />
• m16:16、m16:32 - 2 つの数値からなる far ポインタを内容とするメモリ ・ オペラン<br />
ド 。 コ ロ ンの左側の数値は ポ イ ン タ のセグ メ ン ト ・ セ レ ク タ に対応し、 右側の数値<br />
は ポ イ ン タ のオ フ セ ッ ト に対応す る。<br />
3:374 第 3 巻 : IA-32 基本命令リファレンス