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?
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!).
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)
Mettez-le à peu près n'importe où.
gcc -O3 -S -o output.asm ...
stockera l'assembly généré dans output.asm
.