1.7.5 浮動小数点処理を使用したベアマシン C

C ライブラリなしで、浮動小数点処理をアプリケーションで使用する場合は、満たす必要がある多数の要件があります。

以下の要件があります。
  • ヒープを使用する場合は __rt_raise() を再実装します。
  • main() を定義しないようにします(ライブラリ初期化コード内のリンク付けを回避するため)。
  • C 言語を実行するために必要なレジスタ状態を確立するアセンブリ言語ベニアを記述します。このベニアは、アプリケーション内でエントリ関数に分岐する必要があります。C を実行するために必要なレジスタ状態は、主にスタックポインタで構成されています。
  • 独自の RW/ZI 初期化コードを指定します。
  • リセットハンドラに配置するなどして初期化ベニアが必ず実行されるようにします。
  • アプリケーションのビルドには、適切な FPU オプションを使用します。
  • _fp_init() を呼び出して、浮動小数点処理の実行前に浮動小数点状態レジスタを初期化します。
--fpu=none オプションを使用してアプリケーションをビルドしないで下さい。
特定の浮動小数点モードをソフトウェア浮動小数点サポートで使用する場合は、浮動小数点ステータスワードが必要です。これは、ARM コンパイラ 6 では、デフォルトで有効になっていますが、-ffast-matharmclang コマンドラインオプションによって無効にできます。このような場合、関数 __rt_fp_status_addr() を定義して、浮動小数点ステータスレジスタの代わりに使用する書き込み可能データワードのアドレスを返すこともできます。__rt_fp_status_addr() のデフォルトライブラリ定義に依存する場合は、__user_perthread_libspace()(または、まだ __user_perthread_libspace() を使用していない従来のコードの場合は、__user_libspace())を定義しない限り、このワードはプログラムデータセクション内に存在します。
関連する概念
1.7.4 ベアマシン整数 C
1.7.2 C ライブラリを使用せずにベアマシン C としてアプリケーションを作成
1.5.4 C ライブラリでのスタティックデータの使用
関連する参考文書
1.7.1 C ライブラリを使用しないアプリケーションの作成
1.5.5 C ライブラリによる __user_libspace スタティックデータ領域の使用
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.