2009-09-25 7 views

Répondre

4

gcc can dump an assembly listing using -S switch - il va émettre le code d'assemblage dans un fichier avec une extension .s. Par exemple, la commande suivante:

gcc -O2 -S -c foo.c 

laissera le code d'assembly généré sur le fichier foo.s.

Si vous voulez voir le code C en même temps que l'assemblée, il a été converti en, utiliser une ligne de commande comme ceci:

gcc -c -g -Wa,-a,-ad [other GCC options] foo.c > foo.lst 

qui affichera la liste C/ensemble combiné au fichier foo.lst .

La plupart des compilateurs prendront en charge quelque chose de similaire pour faciliter le débogage du compilateur lui-même. For Visual C++, see this guide.

+0

Savez-vous si g ++ a cette fonction? Si oui, comment l'utilisez-vous? thx – user176121

+0

Oui, il a! Vérifiez la page man de g ++ pour obtenir plus de détails – vpram86

+0

L'option pour g ++ devrait être exactement la même –

0

Ces langages sont assez différents en ce que C et C++ sont normalement compilés en code machine, tandis que Java utilise une machine virtuelle. Vous ne pouvez pas raisonnablement compiler Java en langage assembleur (si vous voulez voir le code machine, utilisez un débogueur), mais avec C ou C++ cela devrait être assez facile, selon votre compilateur. Par exemple, lorsque vous utilisez gcc, donnez-lui simplement une option -S et il produira un fichier de code d'assemblage à la place du code objet.

+0

Il existe des compilateurs Java (comme [gcj] (http://gcc.gnu.org/java/)) qui compilent le code natif plutôt que le bytecode JVM. Vous pourriez regarder l'assemblée générée pour ceux-ci. –

0

De nombreux compilateurs ont la possibilité d'afficher le code d'assemblage généré. Par exemple, gcc a l'option -S, qui arrêtera la compilation avant l'assemblage et vous laissera les fichiers d'assemblage.

Questions connexes