Obi Yann Posté(e) le 17 février 2008 Posté(e) le 17 février 2008 Mon programme: .section .rodata .LC0: .string "%i\n" .text .globl main .type main, @function main: #création du cadre de pile pushl %ebp movl %esp,%ebp pushl %ecx subl $4, %esp #chargement de la valeur 6 dans eax et 5 dans ebx movl $6, %eax movl $5, %ebx #impression du contenu de eax sur l'écran movl %eax, 4(%esp) movl $.LC0, (%esp) call printf #impression du contenu de ebx sur l'écran movl %ebx, 4(%esp) movl $.LC0, (%esp) call printf #impression du contenu de eax sur l'écran movl %eax, 4(%esp) movl $.LC0, (%esp) call printf #fin du programme movl $0, %eax addl $4, %esp popl %ecx popl %ebp ret m'affiche ceci: yann@yann-laptop:/home/tp/Archi/Asm$ gcc exo3b.s -o exo3b yann@yann-laptop:/home/tp/Archi/Asm$ ./exo3b 6 5 2 yann@yann-laptop:/home/tp/Archi/Asm$ Je ne comprend pas pourquoi il m'affiche 2 et non 6, le contenu de %eax aurait été changé? par quoi? Je débute en assembleur, la solution est surement très bête, mais la je ne vois pas trop.
BreizFenrir Posté(e) le 18 février 2008 Posté(e) le 18 février 2008 J'aimerais t'aider mais n'ayant fait que très peu d'assembleur (x86, 68k et ARM7) au cours de ma scolarité, quand bien même je vois le fonctionnement global de ton code, j'ai du mal à comprendre le fonctionnement précis des instructions. Tu pourrais rajouter quelques commentaires précisant l'objectifs poursuivi par certaines suites d'instructions ? C'est pas dit que quelqu'un pourra toujours aider après ça (enfin je pense qu'il y a tout de même quelques personnes qui touchent à l'assembleur de temps à autre), mais ça devrait tout de même rendre la résolution de ton problème plus facile.
JohnSmith Posté(e) le 18 février 2008 Posté(e) le 18 février 2008 Bonjour, Je ne comprend pas pourquoi il m'affiche 2 et non 6, le contenu de %eax aurait été changé? par quoi? Parceque printf n'est pas de type void et retourne je ne sais plus quelle valeur dans %eax. Ce qui est la façon standard pour une fonction sous GCC de retourner une valeur jusqu'à 32 bits... Explications youhou ça y est j'ai ma première étoile (au bout de 3 ans 1/2)!
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.