Comment puis-je compiler l'assemblage avec gcc
Comment puis-je compiler à l'assemblée au lieu d'un exécutable avec gcc. Je sais qu'il est un -S drapeau, mais où dois-je l'utiliser dans le fichier makefile. Par exemple, si j'utilise des drapeaux -O3-o exe_name, où dois-je mettre de l'indicateur S?
- Voulez-vous dire de l'objet fichier au lieu de l'assemblée?
Vous devez vous connecter pour publier un commentaire.
Je suggère également à l'aide de
-fverbose-asm
car alors l'assembleur généré a certains commentaires qui "explique" le code. Par exemple:génèrerait en
foo.s
(avec quelques commentaires) du code assembleur produit par la compilation defoo.c
Et de comprendre ce que la GCC optimisations sont en train de faire, on pourrait même essayer
-fdump-tree-all
(mais cela produit des centaines de fichiers!).Vous pouvez demander à GCC de produire le fichier d'assemblage, au lieu d'un fichier de l'objet (ou d'un fichier exécutable).
Par exemple:
Va produire un fichier de l'objet de test.c (test.o).
Va produire un fichier exécutable nommé "test" à partir de test.c
Va produire un fichier d'assemblage de test.c (test.s)
-S
sur mon système ditStop after the stage of compilation proper; do not assemble.
-S
un fichier texte?cc1
) produit de l'asm, qui est monté par un assembleur. Avec-o
, l'avant fait cela pour vous, mais c'est une étape distincte. Il n'y a pas d'option pour aller directement en code machine, parce que gcc n'est pas un assembleur intégré. Un assembleur a à savoir au sujet de l'objet-formats de fichier (ELF, A. OUT, Mach-O, Windows PE, etc.), codage d'instruction de l'optimisation, de la branche à déplacement d'optimisation, etc. gcc ne sait même pas de l'instruction des longueurs, il y a des heuristiques pour l'émission de.p2align 4,12
/.p2align 3
par exemple.Mettre à peu près n'importe où.
va stocker le générés assemblée dans
output.asm
.-S
écrit quelque chose commefilename.s
donc je ne pense pas que le-o
paramètre est nécessaire