Maison >développement back-end >C++ >Comment générer du code assembleur à partir de C/C en utilisant GCC et objdump ?

Comment générer du code assembleur à partir de C/C en utilisant GCC et objdump ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-27 02:48:14620parcourir

How to Generate Assembly Code from C/C   using GCC and objdump?

Comment sortir le code assembleur à partir de la source C/C dans GCC

Lors de l'analyse du code compilé, l'accès au code assembleur généré est essentiel. Dans GCC, cela peut être réalisé en utilisant l'option "-S".

Utilisation de l'option -S

Par défaut, "-S" exécute le préprocesseur sur le fichier source, effectue la compilation initiale mais s'arrête avant d'invoquer l'assembleur. Combinée avec "-fverbose-asm", cette option associe le code C au code assembleur sous forme de commentaire, particulièrement utile au niveau d'optimisation -O0.

gcc -S helloworld.c

Personnalisation du fichier de sortie

Le fichier de sortie porte généralement le nom du fichier source avec une extension .s. Pour personnaliser l'emplacement du fichier de sortie, utilisez l'option "-o" :

gcc -S -o my_asm_output.s helloworld.c

Vous pouvez également envoyer une sortie vers la console en utilisant "-o -":

gcc -S -o - helloworld.c | less

Accès à Assembly pour les objets exécutables

Si vous n'avez pas le code source d'origine mais que vous disposez du fichier objet, utilisez objdump avec l'option "--disassemble" (-d) :

objdump -S --disassemble helloworld > helloworld.dump

Activez le débogage dans la compilation originale (-g) pour une sortie de désassemblage améliorée avec les références de ligne source.

Options Objdump supplémentaires

Envisagez d'utiliser ces options objdump pour plus de détails analyse :

  • -rwC : déplacements de symboles, désactivation du retour à la ligne et démêlage des noms C
  • -Mintel : syntaxe Intel pour le désassemblage x86

Pour Par exemple, la commande suivante fournit une sortie de désassemblage riche :

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

N'oubliez pas que "-r" est Il est crucial d'afficher les références aux symboles dans un fichier .o avec des espaces réservés.

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