Maison >développement back-end >C++ >Comment générer du code assembleur à partir de C/C en utilisant GCC et 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 :
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!