● 関数リファレンス
ステータスワード値を取得
unsigned int __stdcall floatex_get_status(void);
引数
無し
戻り値
ステータスワード値を返します。
説明
現在の FPU ステータスワード値を取得します。
例外の処理やフラグのクリアは行われません。必要がある場合は他の関数や処理の組み合わせで行ってください。
この関数は、eax 以外の汎用レジスタの内容を変えません。また、EFLAGS の内容を保存します。
次の構造体を使用すると、変数として各情報にアクセスする事ができます。
(FPU_STATUS 構造体)
typedef struct {
unsigned int invalid : 1;
unsigned int denormal : 1;
unsigned int zerodivide : 1;
unsigned int overflow : 1;
unsigned int underflow : 1;
unsigned int inexact : 1;
unsigned int stackfault : 1;
unsigned int errorsummary : 1;
unsigned int C0 : 1;
unsigned int C1 : 1;
unsigned int C2 : 1;
unsigned int stacktop : 3;
unsigned int C3 : 1;
unsigned int busy : 1;
} FPU_STATUS,*PFPU_STATUS;
この構造体は floatex.h 内で定義されています。
メンバ名 | 意味 |
invalid | 無効操作(IE) |
denormal | デノーマライズド・オペランド(DE) |
zerodivide | ゼロ除算(ZE) |
overflow | オーバーフロー(OE) |
underflow | アンダーフロー(UE) |
inexact | 不正確結果(PE) |
stackfault | スタック・フォルト(SF) |
errorsummary | エラー・サマリー・ステータス(ES) |
C0 | 条件コード(C0) |
C1 | 条件コード(C1) |
C2 | 条件コード(C2) |
stacktop | レジスタ・スタック・トップ |
C3 | 条件コード(C3) |
busy | FPU ビジー(B) |
変換には、次の共用体を使用する事もできます。この共用体は floatex.h 内で定義されています。
typedef union {
unsigned int dword;
FPU_STATUS bits;
} FPU_STATUS_DW,*PFPU_STATUS_DW;