かなり複雑な理由で、個別にコンパイルしてからリンクしたい一連のファイルがありますが、1 つの関数が 2 番目の関数にインラインで配置されるようにします。これは、GCC で異なるフラグを使用してコンパイルしたいためです。それを回避する方法を調べることで問題を解決できることはわかっていますが、これが可能かどうかを知りたいです。
編集1:そうでない場合、「外部」関数を、他のファイルに含めることができるアセンブリの形式にコンパイルすることは可能ですか? はい、クレイジーですがクールでもあります...
ざっと見てみると、これはオプションである可能性があります。自動でコンパイルするのは無理だと思うので、どなたかアセンブルについて教えていただけないでしょうか?基本的なARMアセンブリのみを使用しました。-S
GCC のフラグを使用しておもちゃの関数にコンパイルしました。レジスタと変数をリンクするにはどうすればよいですか? それらは常に同じ順序になりますか?この機能は高度に最適化されます。いつ抽出を開始および終了する必要がありますか? .cfi_startproc
最初と最後に含める必要があり.cfi_def_cfa 7, 8
ますか?#
編集 2:
この投稿では、gcc がこのようなリンク時の最適化を行う方法について詳しく説明してい-flto
ます。悲しいことに、これはバージョン 4.5 でのみ使用できます。これをコンパイルする必要があるマシンのルート アクセス権がないため、インストールすることもできません。別の可能な解決策は、異なるバージョンの GCC を UNIX マシンのフォルダーにインストールする方法を説明することです。