• 検索結果がありません。

1.7. 64 ビットモードの一般的規則

2.1. 命令リファレンス・ページの読み方

2.1.3.1. IA-32e モードでの操作

「IA-32eモードでの操作」の項では、レガシーの

IA-32

モードとは異なる

64

ビットモー ドでの命令の動作について説明する。

図2-1. BIT[EAX,21]のビット・オフセット

図2-2. メモリビットのインデックス操作

0 21

31

BitOffset ←

BitBase + 1

0 7

7

7 5 0 0

BitBase − 2

0 7

7

7 0 0 5

BitBase BitBase − 1 BitOffset ←

BitOffset ← BitBase − 1 BitBase

2.1.4.

影響を受けるフラグ

「影響を受けるフラグ」の項には、命令の影響を受ける

EFLAGS

レジスタのフラグを 示す。フラグはクリアされたときは

0

に等しく、セットされたときは

1

に等しい。算 術演算および論理演算命令は、通常、一定の方法で値をステータス・フラグに代入す る(詳細については『IA-32インテル®

アーキテクチャ・ソフトウェア・デベロッパー

ズ・マニュアル、上巻』の付録

A「EFLAGS クロス・リファレンス」を参照のこと)

「操作」の項では、非従来型の代入について説明している。未定義として示してある フラグの値は、不確定な方法で変更される場合がある。記載されていないフラグは命 令によって変更されない。

2.1.5.

影響を受ける

FPU

フラグ

浮動小数点命令については、「影響を受ける

FPU

フラグ」の項があり、そこで、各命 令が

FPU

ステータス・ワードの

4

つの条件コードフラグにどのように影響を与えるか を説明している。

2.1.6.

保護モード例外

「保護モード例外」の項には、命令を保護モードで実行したときに発生する可能性が ある例外およびそれらの例外の理由を示す。各例外は、番号記号(

#

)とその後に続 く

2

文字からなるニーモニック、括弧で囲まれたオプションのエラーコードで表され る。例えば、

#GP(0)

はエラーコード

0

を伴う一般保護例外を示す。表

2-2.

に、各

2

文 字のニーモニックと割り込みベクタ番号と例外名との対応を示す。これらの例外の詳 細については、『

IA-32

インテル®アーキテクチャ・ソフトウェア・デベロッパーズ・

マニュアル、下巻』の第

5

章の「割り込みと例外の処理」を参照のこと。

アプリケーション・プログラマは、例外が発生した場合は、該当するオペレーティン グ・システムに付属のマニュアルを調べて対処すること。

表2-2. 割り込みベクタ

ベクタ

番号 名称 発生源

保護 モード

実アドレス モード

仮想 8086 モード

64ビット モード

0 #DE -除算エラー DIVおよびIDIV命令

1 #DB -デバッグ 任意のコードまたは

データ参照

3 #BP -ブレークポイント INT 3命令

4 #OF -オーバーフロー INTO命令

5 #BR - BOUND範囲外 BOUND命令 予約

6 #UD -無効オペコード

(未定義オペコード) UD2命令または予約 オペコード

2.1.7.

実アドレスモード例外

「実アドレスモード例外」の項には、命令を実アドレスモードで実行したときに発生 する可能性がある例外を示す。

2.1.8.

仮想

8086

モード例外

「仮想

8086

モード例外」の項には、命令を仮想

8086

モードで実行したときに発生する 可能性がある例外を示す。

7 #NM -デバイスなし(算術

演算コプロセッサなし)

浮動小数点または WAIT/FWAIT命令

8 #DF -ダブルフォルト 例外、NMI、または

INTRを発生する可能 性がある任意の命令

10 #TS -無効TSS タスクスイッチまた

TSSアクセス

予約

11 #NP -セグメントなし セグメント・レジス

タのロードまたはシ ステム・セグメント のアクセス

予約

12 #SS -スタック・セグメン

ト・フォルト

スタック操作および SSレジスタロード

13 #GP -一般保護* 任意のメモリ参照お

よびその他の保護 チェック

14 #PF -ページフォルト 任意のメモリ参照 予約

16 #MF -浮動小数点エラー

(算術演算フォルト)

浮動小数点または WAIT/FWAIT命令

17 #AC -アライメント・

チェック

任意のメモリデータ 参照

予約

18 #MC -マシンチェック マシン・チェック・

エラーはモデルに依

19 #XF - SIMD浮動小数点数値

エラー

SSEおよびSSE2

動小数点命令

* 実アドレスモードにおいて、ベクタ13はセグメント・オーバーラン例外である。

表2-2. 割り込みベクタ (続き)

ベクタ

番号 名称 発生源

保護 モード

実アドレス モード

仮想 8086 モード

64ビット モード

2.1.9.

浮動小数点例外

「浮動小数点例外」の項には、

x87 FPU

の浮動小数点命令を実行したときに発生する可 能性がある例外を示す。これらの例外条件はすべて浮動小数点エラー例外(#MF、ベ クタ番号

16)を発生させる。表 2-3.

に、1または

2

文字のニーモニックと例外名との 対応を示す。これらの例外の詳細については、『IA-32インテル®

アーキテクチャ・ソ

フトウェア・デベロッパーズ・マニュアル、上巻』の第

8

章を参照のこと。

2.1.10. SIMD

浮動小数点例外

SIMD

浮動小数点例外」の項には、

SSE

および

SSE2

浮動小数点命令を実行したとき に発生する可能性がある例外を示す。これらの例外条件は、すべて

SIMD

浮動小数点 エラー例外(

#XF

、ベクタ番号

19

)を発生させる。表

2-4.

に、ニーモニックと例外名 の対応を示す。これらの例外の詳細については、『

IA-32

インテル®アーキテクチャ・

ソフトウェア・デベロッパーズ・マニュアル、上巻』の第

11

章の「

SSE

SSE2

の例 外」を参照のこと。

表2-3. 例外名

ニーモニック 名称 発生源

#IS

#IA

無効浮動小数点演算:

スタック・オーバーフローもしくは アンダーフロー

無効算術演算

x87FPUスタックのオーバーもしくは

アンダーフロー 無効なFPU算術演算

#Z ゼロでの浮動小数点除算 ゼロによる除算

#D 浮動小数点演算デノーマル・オペランド デノーマル・オペランド

#O 浮動小数点数値オーバーフロー 結果がオーバーフロー

#U 浮動小数点数値アンダーフロー 結果がアンダーフロー

#P 浮動小数点不正確結果(精度) 不正確結果(精度)

表2-4. 浮動小数点例外名

ニーモニック 名称 発生源

#I 浮動小数点無効演算 無効算術演算またはソース・オペランド

#Z ゼロでの浮動小数点除算 ゼロによる除算

#D 浮動小数点演算デノーマル・オペランド デノーマル・オペランド

#O 浮動小数点数値オーバーフロー 結果がオーバーフロー

#U 浮動小数点数値アンダーフロー 結果がアンダーフロー

#P 浮動小数点不正確結果 不正確結果(精度)

関連したドキュメント