web-dev-qa-db-fra.com

Comment puis-je compiler vers Assembly avec gcc

Comment puis-je compiler vers Assembly au lieu d'un exécutable avec gcc. Je sais qu'il y a un drapeau - S, mais où dois-je l'utiliser dans le makefile. Par exemple, si j'utilise des indicateurs - - O3 -o exe_name, où dois-je placer l'indicateur -S?

33
MetallicPriest

Je suggère également d'utiliser -fverbose-asm car alors l'assembleur généré a des commentaires générés qui "expliquent" le code. Par exemple:

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

générerait dans foo.s (avec quelques commentaires) le code assembleur produit en compilant foo.c

Et pour comprendre ce que font les optimisations GCC, on pourrait même essayer -fdump-tree-all (mais cela produit centaines de fichiers!).

32

Vous pouvez demander à GCC de produire le fichier d'assembly, au lieu d'un fichier objet (ou d'un exécutable).

Par exemple:

gcc -Wall -c test.c

Produira un fichier objet à partir de test.c (test.o).

gcc -Wall -o test test.c

Produira un fichier exécutable nommé "test" à partir de test.c

gcc -Wall -S test.c

Produira un fichier d'assemblage à partir de test.c (test.s)

23
Macmade

Mettez-le à peu près n'importe où.

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

stockera l'assembly généré dans output.asm.

13
Mat