Gccで実行可能ファイルの代わりにアセンブリにコンパイルする方法を教えてください。 -Sフラグがあることは知っていますが、makefileのどこで使用しますか。たとえば、フラグ-O3 -o exe_nameを使用する場合、-Sフラグをどこに配置すればよいですか?
生成されたアセンブラには、コードを「説明する」コメントが生成されるため、-fverbose-asm
の使用もお勧めします。例えば:
gcc -S -fverbose-asm -O2 foo.c
foo.s
(コメント付き)で、foo.c
をコンパイルして生成されたアセンブラーコードを生成します
そして、GCCの最適化が何をしているのかを理解するために、-fdump-tree-all
を試すこともできます(ただし、これにより数百ファイルが生成されます!)。
オブジェクトファイル(または実行可能ファイル)ではなく、アセンブリファイルを生成するようにGCCに要求できます。
例えば:
gcc -Wall -c test.c
Test.c(test.o)からオブジェクトファイルを生成します。
gcc -Wall -o test test.c
Test.cから「test」という名前の実行可能ファイルを生成します
gcc -Wall -S test.c
Test.c(test.s)からアセンブリファイルを作成します
どこにでも置いてください。
gcc -O3 -S -o output.asm ...
生成されたアセンブリインoutput.asm
を格納します。