Comment puis-je voir le code d'assemblage d'un programme C++?
Quels sont les outils populaires pour le faire?
Comment puis-je voir le code d'assemblage d'un programme C++?
Quels sont les outils populaires pour le faire?
Si vous construisez le programme vous-même, vous pouvez demander à votre compilateur d'émettre du code source en assembleur. Pour la plupart des compilateurs UNIX, utilisez l'interrupteur -S
.
Si vous utilisez l'assembleur GNU, la compilation avec -g -Wa,-alh
affichera le code source et l'assembleur en mode entrelacé sur stdout (-Wa
demande au pilote du compilateur de transmettre des options à l'assembleur, -al
active la liste d'assemblage et -ah
ajoute une liste de code source de " haut niveau "):
g++ -g -c -Wa,-alh foo.cc
Pour Visual Studio, utilisez /FAsc
.
Si vous avez un binaire compilé,
objdump -d a.out
sur UNIX (fonctionne également pour cygwin),dumpbin /DISASM foo.exe
sur Windows.Les débogueurs peuvent également afficher le désassemblage.
disas
dans GDB.set disassembly-flavor intel
si vous préférez la syntaxe Intel.
J'ai tapé la commande disas et ça a fonctionné!.. mais pouvez-vous me dire comment je peux le voir dans la syntaxe Intel?
Veuillez noter que objdump -drwC -S
peut également désassembler avec un mélange de source + asm: Utiliser GCC pour produire un assemblage lisible ?. De plus, consultez Comment supprimer le "bruit" de la sortie d'assemblage de GCC/clang ? pour en savoir plus sur l'obtention d'une belle sortie de gcc -O2 -S
Le débogueur que vous utilisez devrait avoir une vue assemblée (Visual Studio, Borland IDE, gdb, etc.). Si vous n'utilisez pas de débogueur et que vous voulez simplement voir quel assemblage se trouve dans un programme, vous pouvez utiliser un désassembleur ou, alternativement, exécuter le programme et y attacher un débogueur pour faire le dump à partir de là. Consultez les références aux désassembleurs pour des informations sur les options.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
Microsoft Visual C++ Express, définissez simplement un point d'arrêt et appuyez sur
Alt +8
0 votes
Possible Duplicate: stackoverflow.com/questions/137038/…
0 votes
Lié: Comment supprimer le "bruit" de la sortie d'assemblage de GCC/clang? inclut des conseils pour créer des fonctions simples dont l'asm est intéressant à regarder (par exemple, les arguments de fonction au lieu de constantes), et un lien vers la conférence CppCon de Matt Godbolt sur ce qu'il faut chercher dans la sortie du compilateur.