[FPU]

提供: Appmethod Topics
移動先: 案内検索

デバッグ ウィンドウ:インデックス への移動

[表示|デバッグ|FPU]

CPU の浮動小数点演算装置と SSE レジスタの内容を表示します。

項目 説明

命令ポインタ(IPTR)

最後に実行された浮動小数点命令の命令ポインタ(IPTR)アドレス、オペコード、オペランド(OPTR)アドレスを表示します。

FPU レジスタ ペイン

浮動小数点レジスタ スタック(ST0 ~ ST7)を昇順に表示します。スタックのリストの後には、制御ワード、ステータス ワード、タグ ワードが表示されます。8 つのレジスタそれぞれについて、レジスタ名、レジスタ ステータス、レジスタ値の情報が表示されます。レジスタ ステータスの値は次のいずれかです。

  • [空]: レジスタに無効な値が含まれていることを示します。レジスタが空のときには、そのレジスタの値は表示されません。レジスタ内のデータは無効であると見なされるからです。
  • [有効]: レジスタにゼロ以外の有効なデータが含まれていることを示します。
  • [特別]: レジスタに有効な値が含まれているけれども、その有効な値が NAN(非数値)、無限大、または非正規化値という特別な状態を表していることを示します。

各レジスタのステータスは、タグ ワードと、ステータス ワードの第 11 ビット~第 13 ビット(スタック インジケータの先頭)を調べて決定されます。レジスタのステータスが[空]でなければ、レジスタの値がステータスの直後に long double(Extended)形式で表示されます。レジスタは、(long double 以外にも)さまざまな形式で表示できます。

制御ワード、ステータス ワード、タグ ワードは、16 進形式でしか表示できません。この 3 つのワードの中にすぐ前の実行操作で変更された値があれば、赤字で表示されます。

制御フラグ ペイン

制御ワードにエンコードされた制御フラグのリストを表示します。すぐ前の実行操作で変更されたフラグは、赤字で表示されます。制御フラグと、制御ワード内でのビット番号は、次に示すとおりです。

  • IM: 無効動作例外、0
  • DM: デノーマライズド オペランド例外マスク、1
  • ZM: ゼロ除算例外マスク、2
  • OM: オーバーフロー例外マスク、3*UM: アンダーフロー例外マスク、4
  • PM: 精度例外マスク、5
  • PC: 精度制御、8 ~ 9
  • RC: 丸め制御、10 ~ 11
  • IC: 無限制御(廃止)、12

フラグを選択して右クリックすると、フラグの値を変更することができます。単一ビット フラグの場合、値が 0 から 1 へ、または 1 から 0 へ変更されます。複数ビット フラグの場合、すべての取りうる値が順に設定されます。

ステータス フラグ ペイン

ステータス ワードにエンコードされたステータス フラグのリストを表示します。すぐ前の実行操作で変更されたフラグは、赤字で表示されます。フラグと、ステータス ワード内でのビット番号は、次に示すとおりです。

  • IE: 無効動作例外、0
  • DE: デノーマライズド オペランド例外、1
  • ZE: ゼロ除算例外、2
  • OE: オーバーフロー例外、3
  • UE: アンダーフロー例外、4
  • PE: 精度例外、5
  • SF: スタック フォルト、6
  • ES: エラー サマリ ステータス、7
  • C0: 条件コード 0(CF)、8
  • C1: 条件コード 1、9
  • C2: 条件コード 2(PF)、10
  • ST: スタック ポインタのトップ、11 ~ 13
  • C3: 条件コード 3(ZF)、14
  • BF: FPU ビジー、15

フラグを選択して右クリックすると、フラグの値を変更することができます。単一ビット フラグの場合、値が 0 から 1 へ、または 1 から 0 へ変更されます。複数ビット フラグの場合、すべての取りうる値が順に設定されます。

SSE ペイン

ストリーミング SIMD 拡張命令(SSE)レジスタを表示します。SSE ペインを右クリックし、[表示形式の指定]を選択すると、レジスタの内容の表示形式を変更できます。

図: x86 FPU データ レジスタと x64 SSE データ レジスタの比較

X86 FPU.pngX64 SSE.png

コンテキスト メニュー

[FPU]ウィンドウを右クリックすると、以下のコンテキスト メニュー コマンドが表示されます。

項目 説明

[ゼロ]

選択したレジスタの値を 0 に設定します。7 つの FPU レジスタのいずれかに対してこのコマンドを使用すると、そのレジスタに対応するタグ ワード中のタグ ビットも 01 に設定され、レジスタがゼロの値を保持していることを示すようになります。

[空]

選択したレジスタに対応するタグ ワード中のタグ ビットが 11 に設定され、レジスタが空であることを示すようになります。選択したレジスタが CTRL ワード、STAT ワード、TAG ワードのいずれかであれば、このコマンドは淡色表示になって使用できません。

[値の変更...]

[値の変更]ダイアログが表示され、選択したレジスタの新しい値を入力することができます。7 つの FPU レジスタのいずれかに対してこのコマンドを使用すると、そのレジスタに対応するタグ ワード中のタグ ビットも 00 に設定され、レジスタが有効な値を保持していることを示すようになります。[値の変更]ダイアログに入力する値は、[表示形式の指定]メニュー項目で現在指定されている形式に沿ったものでなければなりません。たとえば現在の表示形式が[Extended]であれば、[値の変更]ダイアログに Extended 値を入力する必要があります。

[表示形式の指定]

レジスタ内の値をどのように表示するかを指定します。サブメニューに表示される項目は、[表示]メニューで何を選択しているかによって変わります。

  • FPU レジスタの場合、表示可能な型は、[Word]と[Extended](long double)です。
  • MMX レジスタの場合、表示可能な型は、[Byte]、[Word]、[DWord](double word)、[QWord](quad word)です。
  • SSE レジスタの場合、表示可能な型は、[Byte]、[Word]、[DWord](double word)、[QWord](quad word)、[DQWord](double quad word)、[Single]、[Double]です。

[基数]

MMX レジスタを表示している場合にのみ有効です。MMX レジスタ内の値をどのように表示するかを指定します。指定可能な値は、[2 進]、[符号無し 10 進]、[符号付 10 進]、[16 進]です。

[表示]

FPU レジスタ ペインに FPU レジスタと MMX レジスタのどちらを表示するかを切り替えます。

  • [浮動小数点レジスタ]を選択すると、10 バイト FPU レジスタ ST(0) ~ ST(7) が表示されます。このレジスタは、Extended(long double)値または 5 つの DWord 値として表示できます。
  • [MMX レジスタ]を選択すると、8 バイト MMX レジスタ MM0 ~ MM7 が表示されます。このレジスタは、8 つの Byte 値、4 つの Word 値、2 つの DWord 値、または 1 つの QWord 値として表示できます。これらの値は、2 進、10 進、または 16 進の形式で表示できます([基数]の項を参照)。MMX レジスタは、MMX が有効になっているコンピュータでしか表示されません。

[フラグの反転]

ステータス フラグ ペインおよび制御フラグ ペインで、選択したフラグの値を変更します。単一ビット フラグの場合、値が 0 から 1 へ、または 1 から 0 へ変更されます。複数ビット フラグの場合、すべての取りうる値が順に設定されます。

[常に手前に表示]

[FPU]ビューを他のウィンドウよりも上に表示します。


関連項目