例外の種類 | 意味 |
無効操作例外(IE) | 無効な演算を行った時に発生します(算術命令に無効なオペランドを指定した時)。スタックフォルトが発生した時は、スタックフォルトフラグと一緒に、このフラグもセットされます。 | デノーマライズド・オペランド例外(DE) | デノーマル値を演算しようとした時に発生します(参照:「デノーマル数」)。また、32 bit 、64 bit 精度のデノーマル値をレジスタスタックにロードしようとした時にも発生します。 |
ゼロ除算例外(ZE) | FPU がゼロ除算を行った時に発生します。算術的にゼロ除算を行った場合以外に、FPU が内部演算で行った除算でも発生する事があります。 |
オーバーフロー例外(OE) | 演算結果が、格納先の変数で表現できる範囲を超えた場合に発生します。 |
アンダーフロー例外(UE) | 演算結果がノーマル数よりも小さい場合(デノーマル数になった場合)に発生します。 |
不正確結果例外(PE) | 精度例外と呼ばれる事もあります。演算結果が、格納先の変数で正確に表現できない場合に発生します。 |
スタックフォルト(SF) | 演算処理が、8 本分以上のレジスタスタックを操作しようとした場合に発生します。このフラグがセットされる時は、無効操作例外もセットされます。 レジスタスタックに入り切らない量をプッシュした場合はスタックオーバーフローとなり、ステータスワードの条件コード C1 に 1 がセットされます。逆に、使用されているレジスタスタックよりも多くの量をポップした場合はスタックアンダーフローとなり、C1 がゼロクリアされます。 |
例.ゼロ除算例外がマスクされている場合 if (!floatex_nzero(b)) エラー処理 else floatex_div(a,b);