Compilateur C, traduire en langage machine
funkeen
Messages postés
232
Statut
Membre
-
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Hxyp Messages postés 401 Date d'inscription Statut Membre Dernière intervention -
Bonjour, j'apprend le C et j'aimerais le lancer et voir le langage machine de mon code en C, comment faire ? ( j'ai CODE::BLOCKS)
merci d'avance
merci d'avance
A voir également:
- Compilateur C, traduire en langage machine
- Langage ascii - Guide
- Machine virtuelle windows - Guide
- Comment traduire un site en français - Guide
- Traduire un texte en photo - Guide
- Time machine - Guide
1 réponse
Bonjour, vous pouvez utiliser un désassembler après la compilation, le debugger gdb le fait avec la commande disass.
A la compilation avec gcc vous pouvez générer un fichier asm avec l'option -S je ne sais pas comment y parvenir à partir de codeblocks, le plus simple à faire est de créer un .bat, par exemple pour générer l'asm du fichier main.c dans le .bat j'y met :
Et un .bat pour désassembler après compilation en utilisant gdb :
A la compilation avec gcc vous pouvez générer un fichier asm avec l'option -S je ne sais pas comment y parvenir à partir de codeblocks, le plus simple à faire est de créer un .bat, par exemple pour générer l'asm du fichier main.c dans le .bat j'y met :
c:\mingw\bin\gcc -S main.cceci dans un fichier.bat dans le dossier du projet va générer un fichier main.s et dedans il y a le code en assembleur exemple :
.file "main.c" .def ___main; .scl 2; .type 32; .endef .section .rdata,"dr" LC0: .ascii "Hello world!\0" .text .globl _main .def _main; .scl 2; .type 32; .endef _main: pushl %ebp movl %esp, %ebp andl $-16, %esp subl $16, %esp call ___main movl $LC0, (%esp) call _puts movl $0, %eax leave ret .def _puts; .scl 2; .type 32; .endef
Et un .bat pour désassembler après compilation en utilisant gdb :
c:\mingw\bin\gdb bin\Debug\main.execette ligne dans un fichier debug.bat va charger l'executable dans gdb et y a plus qu'à utiliser les commandes, par exemple "disass main" va afficher le code de la fonction main
(gdb) disass main Dump of assembler code for function main: 0x00401344 <+0>: push %ebp 0x00401345 <+1>: mov %esp,%ebp 0x00401347 <+3>: and $0xfffffff0,%esp 0x0040134a <+6>: sub $0x10,%esp 0x0040134d <+9>: call 0x401990 <__main> 0x00401352 <+14>: movl $0x403024,(%esp) 0x00401359 <+21>: call 0x401c00 <puts> 0x0040135e <+26>: mov $0x0,%eax 0x00401363 <+31>: leave 0x00401364 <+32>: ret End of assembler dump. (gdb)