1

C で記述された多数のメソッドが複数のファイルにまたがっており、それらすべてがローカル変数 (主に構造体インスタンス) を作成します。これらを Windows の ARM EABI GCC コンパイラでコンパイルした後、objdump を使用して .o オブジェクト ファイルを調べてみました。

arm-none-eabi-objdump.exe -f -p -h -x -d -s -t test.o > test.txt

私の質問は: メソッドで使用されるピーク スタック メモリを計算/取得するにはどうすればよいですか?

どのメソッドも、malloc を使用して動的に割り当てられたメモリを割り当てません。だから、これがもっと簡単になることを願っていました。

これが必要なのは、さまざまな最適化オプションでコンパイルしたときに各メソッドが使用するメモリ量を比較する必要があるためです。これは、ローカル メモリの最適化が実行されているかどうかを確認するためです。また、一部のローカル変数では、コンパイラがレジスタを使用する場合があることも理解しています。ただし、メソッドに必要な最大スタック メモリが何であるか、またはそれを計算する方法があるかどうかを知る必要があるだけです。

4

0 に答える 0