● 関数リファレンス

ステータスワード値を取得

    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)
busyFPU ビジー(B)

変換には、次の共用体を使用する事もできます。この共用体は floatex.h 内で定義されています。

typedef union {
    unsigned int        dword;
    FPU_STATUS          bits;
} FPU_STATUS_DW,*PFPU_STATUS_DW;