ARM用GCCコンパイラの出力ファイルを分析する方法が必要です。私はベアメタル用にコンパイルしていて、サイズにかなり関心があります。使うことができます arm-none-eabi-objdump
クロスコンパイラーによって提供されますが、出力を解析することは、このタスクのためのツールが存在する場合、私が熱心に行うことではありません。そのようなツールが存在することを知っていますか?検索結果がありませんでした。
さらに、私のコードのすべての関数は、独自のセクションにあります。
nm
およびsize
を使用して、関数とELFセクションのサイズを取得できます。
関数(および静的ストレージ期間を持つオブジェクト)のサイズを取得するには:
$ nm --print-size --size-sort --radix=d tst.o
2列目には、関数とオブジェクトのサイズが10進数で表示されます。
セクションのサイズを取得するには:
$ size -A -d tst.o
2番目の列は、セクションのサイズを10進数で示しています。
readelf ユーティリティは、セクションサイズなど、さまざまなセクション情報を表示するのに便利です。
arm-none-eabi-readelf -e foo.o
ランタイムメモリフットプリントに関心がある場合は、「A」(割り当て)フラグが設定されていないセクションを無視できます。
puncover
は、objdump
と他のいくつかのgccツールを使用して、コードとデータスペースの場所を簡単に参照できるHTMLページを生成します。
これは、gccツールのテキスト出力よりもはるかに優れたフロントエンドです。