3.16 C99 インタフェースの ARM 浮動小数点コンパイラ拡張

ARM C ライブラリでは、浮動小数点環境で実現可能なすべての機能を ARM インタフェースで実行できるように、C99 インタフェースが拡張されています。拡張機能には、個々の例外の型のトラップの設定と解除、ユーザ定義のトラップハンドラのインストールなども含まれます。

これらの機能では、--fpmode=ieee_full--fpmode=ieee_fixed など、例外をサポートする浮動小数点モデルを選択する必要があります。
fenv_t 型と fexcept_t 型は、C99 では特に定義されていません。ARM では、これら 2 つの型が同じ構造体型として定義されています。
typedef struct{
    unsigned __statusword;
    __ieee_handler_t __invalid_handler;
    __ieee_handler_t __divbyzero_handler;
    __ieee_handler_t __overflow_handler;
    __ieee_handler_t __underflow_handler;
    __ieee_handler_t __inexact_handler;
} fenv_t, fexcept_t;
上記の構造体のメンバは以下のとおりです。
  • __statusword は、__ieee_status() 関数で使用されるステータス変数と同じであり、同じ形式で配置されます。
  • 各例外のトラップハンドラのアドレスを指す 5 つの関数ポインタ。デフォルトでは、どのポインタも NULL です。つまり、例外がトラップされると、そのデフォルトの例外トラップの動作が発生します。デフォルトでは、SIGFPE シグナルが生成されます。
関連する概念
3.8 ARM 浮動小数点環境の制御
3.17 ユーザ定義の例外トラップハンドラの記述
3.18 ユーザ定義の例外ハンドラの例
3.19 シグナルによる例外トラップ処理
3.29 IEEE 754 浮動小数点演算で発生する例外
関連する参考文書
3.10 ARM 浮動小数点環境を制御するための C99 互換関数
5.5 __ieee_status()
関連情報
--fpmode=model コンパイラオプション
非機密扱いPDF file icon PDF 版ARM DUI0475KJ
Copyright © 2010-2014 ARM.All rights reserved.