Maison >développement back-end >C++ >Comment puis-je obtenir la sortie du code assembleur du code source C/C compilé par GCC ?

Comment puis-je obtenir la sortie du code assembleur du code source C/C compilé par GCC ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 06:51:09528parcourir

How Can I Get Assembly Code Output from GCC Compiling C/C   Source Code?

Obtention de la sortie de l'assembleur à partir de la source C/C dans GCC

Pour analyser la façon dont le code est compilé, il est avantageux de récupérer le code assembleur émis. Dans GCC, cela peut être réalisé en utilisant l'option -S.

gcc -S helloworld.c

Cela invoquera le préprocesseur et la compilation initiale, mais s'arrêtera avant d'exécuter l'assembleur.

Pour une sortie d'assembly plus complète, pensez à utiliser -fverbose-asm avec -O0. Cependant, notez que cela fonctionne mieux aux niveaux d'optimisation par défaut.

Le fichier de sortie par défaut est helloworld.s, mais peut être personnalisé à l'aide de -o. De plus, -o - peut être utilisé pour diriger la sortie directement vers la sortie standard.

gcc -S -o my_asm_output.s helloworld.c

Si seul le fichier objet est disponible, objdump avec l'option --disassemble peut être utilisé :

objdump -S --disassemble helloworld > helloworld.dump

Cela entrelacera les lignes source avec la sortie de démontage. L'activation du débogage (-g) et le fait d'éviter la suppression peuvent améliorer les détails du désassemblage.

Pour encore plus de personnalisation, envisagez des options telles que -rwC (déplacements de symboles), -Mintel (syntaxe Intel) et -r (important pour fichiers objets avec des références de symboles d'espace réservé).

Par exemple, la commande suivante fournit un vidage détaillé en utilisant la syntaxe Intel :

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