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
Libérer: 2024-12-27 02:48:14
original
619 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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

gcc -S -o - helloworld.c | less
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal