Maison >développement back-end >C++ >Comment puis-je générer du code assembleur à partir d'une source C/C à l'aide de GCC ?

Comment puis-je générer du code assembleur à partir d'une source C/C à l'aide de GCC ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-21 13:06:14965parcourir

How Can I Generate Assembly Code from C/C   Source Using GCC?

Génération de la sortie de l'assembleur à partir de la source C/C dans GCC

Pour analyser le processus de compilation, obtenir le code d'assemblage émis à partir de la source C/C peut être inestimable. GCC propose deux méthodes pour y parvenir : en utilisant l'option -S et en utilisant objdump.

Utilisation de l'option -S :

L'option -S demande à GCC d'exécuter le préprocesseur et effectuer la compilation initiale, mais s'arrêter avant l'exécution de l'assembleur. Par défaut, la sortie est stockée dans un fichier avec l'extension .s. Pour spécifier un fichier de sortie personnalisé, utilisez l'option -o.

gcc -S helloworld.c

Utilisation d'objdump :

Si vous ne disposez que du fichier objet résultant, vous pouvez utiliser objdump avec l'option --disassemble (-d pour une version plus courte) pour démonter le code :

objdump -S --disassemble helloworld > helloworld.dump

Options supplémentaires :

  • -fverbose-asm (pour gcc) propose des commentaires détaillés sur les opérandes C dans le code assembleur.
  • -rwC (objdump) affiche les déplacements de symboles, désactive le retour à la ligne et démembre C noms.
  • -Mintel (objdump) modifie la syntaxe de désassemblage en Intel pour les architectures x86.

Exemple :

Pour obtenir un assembleur détaillé sortie avec la syntaxe Intel à partir d'un fichier .o pouvant contenir des espaces réservés pour les références de symboles, utilisez :

objdump -drwC -Mintel -S foo.o | less

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn