ソフトウェアのメモリ使用量を最適化/削減したい。私が検討しているアプローチの 1 つは、冗長で不要なコードを削除することです。私のソフトウェアには、Feature Enable メカニズムを介してアクティブ化/非アクティブ化できる多くの機能 (最大 3000) があります。私がやろうとしているのは、機能がどれだけの RAM/FLASH を使用しているかを調べ、最大のものから評価を開始し、それらが必要かどうかを確認することです (不要な機能はコードから安全に削除できます)。また、関数はそれ自体に複数の機能を持つ場合があることに注意してください。
コードは次のようになります。
void foo (void)
{
if(TRUE == feature1_enable)
{
doSomething;
}
if(TRUE == feature2_enable)
{
doSomething;
}
//rest of the code
}
ifステートメントが使用しているコード内のFLASHの量を計算するにはどうすればよいですか? 関数に関するデータのみを提供し、関数内の個々のステートメントは提供しないため、最終的なリンク マップ ファイルは使用できません。私が考えた 1 つの解決策は、C コードからアセンブリ リスト ファイル (.alst) を作成し、if ステートメント内の命令のサイズを計算することです。これは、これらのコード行によって使用される FLASH の量に他なりません。
私が正しい軌道に乗っているか、それともより良い/より簡単な方法があるかどうか教えてください。
使用しています: プロセッサ: MPC5554 (POWER PC アーキテクチャ)
コンパイラ: WindRiver Diab
ロジックが正しければ、最終的にスクリプトを記述して、有効化を検索し、必要な計算を実行します。