web-dev-qa-db-ja.com

gccを使用してアセンブリにコンパイルするにはどうすればよいですか

Gccで実行可能ファイルの代わりにアセンブリにコンパイルする方法を教えてください。 -Sフラグがあることは知っていますが、makefileのどこで使用しますか。たとえば、フラグ-O3 -o exe_nameを使用する場合、-Sフラグをどこに配置すればよいですか?

33
MetallicPriest

生成されたアセンブラには、コードを「説明する」コメントが生成されるため、-fverbose-asmの使用もお勧めします。例えば:

gcc -S -fverbose-asm -O2 foo.c

foo.s(コメント付き)で、foo.cをコンパイルして生成されたアセンブラーコードを生成します

そして、GCCの最適化が何をしているのかを理解するために、-fdump-tree-allを試すこともできます(ただし、これにより数百ファイルが生成されます!)。

32

オブジェクトファイル(または実行可能ファイル)ではなく、アセンブリファイルを生成するように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)からアセンブリファイルを作成します

23
Macmade

どこにでも置いてください。

gcc -O3 -S -o output.asm ...

生成されたアセンブリインoutput.asmを格納します。

13
Mat