24531904_j
24531904_j 24531904_j
• レ ジ ス タ名は暗黙に レ ジ ス タ の内容を意味する。 ブ ラ ケ ッ ト で囲 ま れたレ ジ ス タ名 は、 暗黙に、 アド レスがそのレジスタにストアされているロケーションの内容を意 味する。 例えば、 ES:[DI] は、 ES セグメン ト相対アド レスがレジスタ DI にス トアさ れている ロ ケ ーシ ョ ンの内容を示す。 [SI] は、 レジスタ SI にス トアされている、 SI のデフ ォル ト ・ セグメン ト (DS) またはオーバライド されたセグメントの相対アドレ スの内容を示す。 • 例えば (E)SI のよ うに、 汎用レジスタ名の中で "E" がかっ こで囲まれているのは、 現 在のア ド レ ス ・ サイズ属性が 16 である場合はオフセッ ト が SI レジスタから読み込 まれ、 アド レス ・ サイズ属性が 32 である場合は ESI レジスタから読み込まれること を示す。 • ブラケ ッ ト はメモ リ ・ オペラン ド に対しても使用され、 その場合は、 メモ リ ・ ロ ケ ー シ ョ ンの内容がセグ メ ン ト 相対オ フ セ ッ ト である こ と を意味す る。 例えば、 [SRC] はソース ・ オペランドの内容がセグメント相対オフセットであることを示す。 • A ← B; は、 B の値が A に代入される こ と を示す。 • 記号 =、 ≠、 ≧、 ≦は 2 つの値の比較に使用される関係演算子であ り 、 それぞれ、 「等しい」、 「等し く ない」、 「 よ り 大き いか等しい」、 「 よ り 小 さ いか等しい」 を意味す る。 例えば、 関係式 A=B は、 A の値が B に等しい場合は TRUE ( 真 ) であり、 そ う でない場合は FALSE ( 偽 ) である。 • 式 "> COUNT" は、 デステ ィ ネーシ ョ ン ・ オペラン ド がカウン ト ・ オペラン ド が示すビッ ト 数だけそれぞれ左または右にシフ ト されるこ と を示す。 以下の識別子が、 アルゴ リ ズムの記述に使用 さ れる。 • OperandSize と AddressSize - OperandSize 識別子は、 16 ビッ トか32 ビッ トの命令 のオペラン ド ・ サイズ属性を表す。 AddressSize 識別子は、 16 ビッ トか32 ビットの ア ド レ ス ・ サ イ ズ属性を表す。 例えば、 以下の疑似 コ ー ド は、 オペラ ン ド ・ サイ ズ 属性が使用 さ れる CMPS 命令の フ ォ ー マ ッ ト に依存す る こ と を示している。 F instruction = CMPSW THEN OperandSize ← 16; ELSE IF instruction = CMPSD THEN OperandSize ← 32; FI; FI; こ れ ら の属性の決定方法の一般的ガ イ ド ラ イ ン については、 『IA-32 インテル ® アー キテクチャ ・ ソフ ト ウェア ・ ディベロッパーズ ・ マニュアル、 上巻』 第 3 章の 「オ ペラン ド ・ サイズ属性とアド レス ・ サイズ属性」 を参照のこ と。 • StackAddrSize - 命令に関連す る ス タ ッ ク のア ド レ ス ・ サイ ズ属性を表す。 こ の属性 の値は 16 または 32 ビッ トである( 『IA-32 インテル ® アーキテクチャ ・ ソフ ト ウェ ア・ディベロッパーズ・マニュアル、 上巻』 第 4 章の 4.2.3 項 「スタッ ク ・ アクセス におけ る ア ド レ ス ・ サ イ ズ属性」 を参照のこ と )。 • SRC - ソース ・オペランドを表す。 • DEST - デステ ィ ネーシ ョ ン ・ オペラン ド を表す。 以下の関数が、 アルゴ リ ズムの記述に使用 さ れる。 • ZeroExtend ( 値 ) - 命令のオペラ ン ド ・ サイ ズ属性に合わせたゼ ロ拡張値を返す。 例 えば、 オペラ ン ド ・ サ イ ズ属性が 32 である場合は、 -10 のバイ ト 値をゼロ拡張する と、 そのバイト は F6H からダブルワー ド値000000F6H に変換される。 ZeroEztend 関 数に渡された値と オペラ ン ド ・ サイズ属性が同じサイズである場合は、 ZeroExtend はその値を変えずにそのまま返す。 3:376 第 3 巻 : IA-32 基本命令リファレンス
• SignExtend ( 値 ) - 命令のオペラ ン ド ・ サイズ属性に合わせた符号拡張値を返す。 例 えば、 オペラ ン ド ・ サ イ ズ属性が 32 である場合は、 内容が値 -10 であるバイ ト を符 号拡張す る と 、 そのバイ ト は F6H からダブルワード値FFFFFFF6H に変換される。 SignEztend 関数に渡された値 と オペラ ン ド ・ サ イ ズ属性 と が同じ サ イ ズである場合 は、 SignExtend はその値を変えずにそのまま返す。 • SaturateSignedWordToSignedByte - 符号付き 16 ビ ッ ト 値を符号付き 8 ビット値に変 換する。 符号付き 16 ビット値が-128 より小さい場合は、 その値は飽和値-128 (80H) で表される。 127 よ り 大き い場合は、 飽和値 127 (7FH) で表される。 • SaturateSignedDWordToSignedWord - 符号付き 32 ビ ッ ト 値を符号付き 16 ビッ ト値 に変換す る。 符号付き 32 ビッ ト値が-32768 よ り 小 さ い場合は、 その値は飽和値 -32768 (8000H) で表される。 32767 よ り 大き い場合は、 飽和値 32767 (7FFFH) で表さ れる。 • SaturateSignedWordToUnsignedByte - 符号付き 16 ビッ ト値を符号なし8ビッ ト値 に変換す る。 符号付き 16 ビッ ト値が0 よ り 小 さ い場合は、 その値は飽和値 0 (00H) で表される。 255 よ り 大き い場合は、 飽和値 255 (FFH) で表される。 • SaturateToSignedByte - 演算の結果を符号付き 8 ビ ッ ト 値と して表す。 結果が -128 より小さい場合は、 その値は飽和値-128 (80H) で表される。 127 より大きい場合は、 飽和値 127 (7FH) で表される。 • SaturateToSignedWord - 演算の結果を符号付き 16 ビ ッ ト 値 と して表す。 結果が -32768 より小さい場合は、 その値は飽和値-32768 (8000H) で表される。 32767 より大 き い場合は、 飽和値 32767 (7FFFH) で表される。 • SaturateToUnsignedByte - 演算の結果を符号なし 8 ビ ッ ト 値 と して表す。 結果が 0 より小さい場合は、 その値は飽和値0 (00H) で表される。 255 より大きい場合は、 飽 和値 255 (FFH) で表される。 • SaturateToUnsignedWord - 演算の結果を符号なし 16 ビ ッ ト 値と して表す。 結果が 0 より小さい場合は、 その値は飽和値0 (00H) で表される。 65535 より大きい場合は、 飽和値 65535 (FFFFH) で表される。 • LowOrderWord (DEST * SRC) - ワード・オペランドにワード・オペランドを掛け、 ダブルワードの結果の下位ワードをデスティネーション・オペランドにストアする。 • HighOrderWord (DEST * SRC) - ワード ・オペランドにワード ・ オペランドを掛け、 ダブルワードの結果の上位ワードをデスティネーション・オペランドにストアする。 • Push ( 値 ) - 値をスタ ッ ク にプ ッ シュする。 プ ッ シュ されるバイ ト 数は命令のオペラ ンド ・サイズ属性によって決まる。 • Pop() - 一番上のス タ ッ ク か ら値を削除し、 その値を返す。 文 EAX ← Pop(); は、 一番 上のス タ ッ ク か ら 32 ビット値をEAX に代入する。 Pop は、 オペラン ド ・ サイズ属 性に応じて、 ワ ー ド かダブルワ ー ド を返す。 • PopRegisterStack - FPU の ST(0) レジスタを空としてマークし、 FPU レジスタ ・ ス タック ・ポインタ(TOP) を 1 だけインク リ メン ト する。 • Switch-Tasks - タスク ・ スイッチを行う。 • Bit(BitBase, BitOffset) - メモリまたはレジスタ内の一連のビットであるビット・スト リング内の特定ビットの値を返す。 ビットには、 レジスタ内またはメモリ ・バイト 内で下位か ら上位に番号が割り振られている。 ベー ス ・ オペラン ド がレ ジス タであ る場合は、 存在可能なオ フ セ ッ ト の範囲は 0 ~ 31 である。 このオフセッ ト は、 指定 されたレジスタ内のビッ ト のアド レスを指定する。 例として、 図 1-1 に関数 Bit[EAX,21] の図解を示す。 第 3 巻 : IA-32 基本命令リファレンス 3:377
- 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 386 und 387: • rel16 および rel32 - アセ
- 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 オペ
- Seite 436 und 437: CLTS—Clear Task-Switched Flag in
• レ ジ ス タ名は暗黙に レ ジ ス タ の内容を意味する。 ブ ラ ケ ッ ト で囲 ま れたレ ジ ス タ名<br />
は、 暗黙に、 アド レスがそのレジスタにストアされているロケーションの内容を意 味する。 例えば、 ES:[DI] は、 ES セグメン ト相対アド レスがレジスタ DI にス トアさ<br />
れている ロ ケ ーシ ョ ンの内容を示す。 [SI] は、 レジスタ SI にス トアされている、 SI<br />
のデフ ォル ト ・ セグメン ト (DS) またはオーバライド されたセグメントの相対アドレ スの内容を示す。<br />
• 例えば (E)SI のよ うに、 汎用レジスタ名の中で "E" がかっ こで囲まれているのは、 現<br />
在のア ド レ ス ・ サイズ属性が 16 である場合はオフセッ ト が SI レジスタから読み込<br />
まれ、 アド レス ・ サイズ属性が 32 である場合は ESI レジスタから読み込まれること<br />
を示す。<br />
• ブラケ ッ ト はメモ リ ・ オペラン ド に対しても使用され、 その場合は、 メモ リ ・ ロ<br />
ケ ー シ ョ ンの内容がセグ メ ン ト 相対オ フ セ ッ ト である こ と を意味す る。 例えば、<br />
[SRC] はソース ・ オペランドの内容がセグメント相対オフセットであることを示す。 • A ← B; は、 B の値が A に代入される こ と を示す。<br />
• 記号 =、 ≠、 ≧、 ≦は 2 つの値の比較に使用される関係演算子であ り 、 それぞれ、<br />
「等しい」、 「等し く ない」、 「 よ り 大き いか等しい」、 「 よ り 小 さ いか等しい」 を意味す<br />
る。 例えば、 関係式 A=B は、 A の値が B に等しい場合は TRUE ( 真 ) であり、 そ う<br />
でない場合は FALSE ( 偽 ) である。<br />
• 式 "> COUNT" は、 デステ ィ ネーシ ョ ン ・ オペラン ド がカウン ト ・<br />
オペラン ド が示すビッ ト 数だけそれぞれ左または右にシフ ト されるこ と を示す。<br />
以下の識別子が、 アルゴ リ ズムの記述に使用 さ れる。<br />
• OperandSize と AddressSize - OperandSize 識別子は、 16 ビッ トか32 ビッ トの命令<br />
のオペラン ド ・ サイズ属性を表す。 AddressSize 識別子は、 16 ビッ トか32 ビットの<br />
ア ド レ ス ・ サ イ ズ属性を表す。 例えば、 以下の疑似 コ ー ド は、 オペラ ン ド ・ サイ ズ<br />
属性が使用 さ れる CMPS 命令の フ ォ ー マ ッ ト に依存す る こ と を示している。<br />
F instruction = CMPSW<br />
THEN OperandSize ← 16;<br />
ELSE<br />
IF instruction = CMPSD<br />
THEN OperandSize ← 32;<br />
FI;<br />
FI;<br />
こ れ ら の属性の決定方法の一般的ガ イ ド ラ イ ン については、 『IA-32 インテル ® アー<br />
キテクチャ ・ ソフ ト ウェア ・ ディベロッパーズ ・ マニュアル、 上巻』 第 3 章の 「オ<br />
ペラン ド ・ サイズ属性とアド レス ・ サイズ属性」 を参照のこ と。<br />
• StackAddrSize - 命令に関連す る ス タ ッ ク のア ド レ ス ・ サイ ズ属性を表す。 こ の属性<br />
の値は 16 または 32 ビッ トである( 『IA-32 インテル ® アーキテクチャ ・ ソフ ト ウェ<br />
ア・ディベロッパーズ・マニュアル、 上巻』 第 4 章の 4.2.3 項 「スタッ ク ・ アクセス<br />
におけ る ア ド レ ス ・ サ イ ズ属性」 を参照のこ と )。<br />
• SRC - ソース ・オペランドを表す。<br />
• DEST - デステ ィ ネーシ ョ ン ・ オペラン ド を表す。<br />
以下の関数が、 アルゴ リ ズムの記述に使用 さ れる。<br />
• ZeroExtend ( 値 ) - 命令のオペラ ン ド ・ サイ ズ属性に合わせたゼ ロ拡張値を返す。 例<br />
えば、 オペラ ン ド ・ サ イ ズ属性が 32 である場合は、 -10 のバイ ト 値をゼロ拡張する<br />
と、 そのバイト は F6H からダブルワー ド値000000F6H に変換される。 ZeroEztend 関<br />
数に渡された値と オペラ ン ド ・ サイズ属性が同じサイズである場合は、 ZeroExtend<br />
はその値を変えずにそのまま返す。<br />
3:376 第 3 巻 : IA-32 基本命令リファレンス