1.7.4 ベアマシン整数 C

ライブラリを使用しないプログラムを C 言語で記述し、環境を初期化せずにプログラムを実行する場合は、満たす必要がある多数の要件があります。

以下の要件があります。
  • ヒープを使用する場合は __rt_raise() を再実装します。
  • main() を定義しないようにします(ライブラリ初期化コード内のリンク付けを回避するため)。
  • C 言語を実行するために必要なレジスタ状態を確立するアセンブリ言語ベニアを記述します。このベニアは、アプリケーション内でエントリ関数に分岐する必要があります。
  • 独自の RW/ZI 初期化コードを指定します。
  • リセットハンドラに配置するなどして初期化ベニアが必ず実行されるようにします。
  • --fpu=none を使用してアプリケーションをビルドします。
これらの要件を満たしている場合は、通常どおりにアプリケーションをリンクします。リンカは、適切な C ライブラリバリアントを使用して必要なコンパイラヘルパ関数(暗黙的に呼び出される)を見つけます。
多くのライブラリ機能では、スタティックデータの保存のために __user_libspace が必要です。main() 関数を含めることによって初期化コードをアクティブ化しなくても、自動的に __user_libspace が作成され、ZI セグメント内の 96 バイトが使用されます。
関連する概念
1.7.5 浮動小数点処理を使用したベアマシン C
1.7.2 C ライブラリを使用せずにベアマシン C としてアプリケーションを作成
関連する参考文書
1.7.1 C ライブラリを使用しないアプリケーションの作成
1.5.5 C ライブラリによる __user_libspace スタティックデータ領域の使用
非機密扱いPDF file icon PDF 版ARM DUI0808CJ
Copyright © 2014, 2015 ARM.All rights reserved.