● 関数リファレンス
浮動小数点例外のチェック
void __stdcall floatex_fwait(void);
引数
無し
戻り値
無し
説明
fwait 命令を実行し、未処理の浮動小数点例外をチェックします。未処理の例外があり、その例外がマスクされていない場合は、例外処理を行います(既に発生している例外の処理を行う)。
処理すべき例外が発生していない場合は、何もせずに関数を終了します。
テスト.
#include <stdio.h>
#include "floatex.h"
void __cdecl main(void)
{
floatex_reset();
__try{
FLOATEX val;
/*
ゼロ除算
この時点ではマスクが掛かっているので、例外処理は行われません
*/
floatex_ediv(fex_const_1,fex_const_0,val);
if (floatex_exceptionflags(FEX_STAT_ZE)){ /* ゼロ除算例外を検出 */
floatex_loadcw2(FEX_PC_64 | FEX_RC_NEAR); /* 例外マスク解除 */
printf("前処理\n");
floatex_fwait(); /* 例外ハンドラへ */
}
}
__except(1){
printf("except ブロック\n");
}
floatex_reset();
}
この関数は、汎用レジスタの内容を変えません。また、EFLAGS の内容を保存します。