C プログラムのスタートアップ コード サイズの縮小 - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: エンベデッド ソフトウェア開発 (UG1400)

Document ID
UG1400
Release Date
2022-04-26
Version
2022.1 日本語
C プログラムのコード サイズの制限が厳しい場合は、オーバーヘッドの原因となるあらゆるものを取り除く必要があります。このセクションでは、C プログラムで不要な C++ コンストラクターまたはデストラクター コードによるオーバーヘッドを削減する方法を説明します。次の変更を加えることにより、コードのサイズを約 220 バイト縮小できます。
  1. 前のセクションで説明したように、インストール領域からスタートアップ ファイルのカスタム コピーを作成します。アプリケーションに適した crtn.s および xcrtinit.s をコピーします。たとえば、アプリケーションがブートローダーを使用して読み込まれ、プロファイルが作成される場合は、インストール領域から crt2.s および pg-crtinit.s をコピーします。
  2. pg-crtinit.s から次の行を削除します。
    brlid r15, __init 
    /* Invoke language initialization functions */
    nop

    and

    brlid r15, __fini 
    /* Invoke language cleanup functions */
    nop

    これにより、コンストラクターおよびデストラクターの処理に使用されるコードは参照されなくなり、コード サイズが小さくなります。

  3. これらのファイルを .o ファイルにコンパイルして任意のディレクトリに配置するか、アプリケーション ソースの一部として含めます。
  4. コンパイラに -nostartfiles オプションを追加します。特定のフォルダーにファイルを統合する場合は、-B directory オプションも使用します。
  5. アプリケーションをコンパイルします。

アプリケーションを異なるモードで実行する場合は、スタートアップ ファイルの説明に従って、適切な CRT ファイルを選択する必要があります。