Maison >développement back-end >C++ >Comment puis-je obtenir la sortie du code assembleur du code source C/C compilé par GCC ?
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!