C プログラムのコード サイズの制限が厳しい場合は、オーバーヘッドの原因となるあらゆるものを取り除く必要があります。このセクションでは、C プログラムで不要な C++ コンストラクターまたはデストラクター コードによるオーバーヘッドを削減する方法を説明します。次の変更を加えることにより、コードのサイズを約 220 バイト縮小できます。
- 前のセクションで説明したように、インストール領域からスタートアップ ファイルのカスタム コピーを作成します。アプリケーションに適した crtn.s および xcrtinit.s をコピーします。たとえば、アプリケーションがブートローダーを使用して読み込まれ、プロファイルが作成される場合は、インストール領域から crt2.s および pg-crtinit.s をコピーします。
- pg-crtinit.s から次の行を削除します。
brlid r15, __init /* Invoke language initialization functions */ nop
and
brlid r15, __fini /* Invoke language cleanup functions */ nop
これにより、コンストラクターおよびデストラクターの処理に使用されるコードは参照されなくなり、コード サイズが小さくなります。
- これらのファイルを .o ファイルにコンパイルして任意のディレクトリに配置するか、アプリケーション ソースの一部として含めます。
- コンパイラに -nostartfiles オプションを追加します。特定のフォルダーにファイルを統合する場合は、-B directory オプションも使用します。
- アプリケーションをコンパイルします。
アプリケーションを異なるモードで実行する場合は、スタートアップ ファイルの説明に従って、適切な CRT ファイルを選択する必要があります。