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

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

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