[C/ASM] Traduction C ASM

Traduction C ASM [C/ASM] - C - Programmation

Marsh Posté le 19-02-2004 à 20:16:53    

J'ai un code C

Code :
  1. #include <stdio.h>
  2. main()
  3. {
  4.   int i,j,k;
  5.   i=1; j=2;
  6.   k=i+j;
  7.   printf("La somme calculee est : %d\n",k);
  8. }


 
Et le résultat de la commande suivante :
gcc -O0 -S test.c
qui me donne test.s une traduction ASM ci dessous

Code :
  1. .file "test.c"
  2. .section .rodata
  3. .LC0:
  4. .string "La somme calculee est : %d\n"
  5. .text
  6. .globl main
  7. .type main,@function
  8. main:
  9. pushl %ebp
  10. movl %esp, %ebp
  11. subl $24, %esp
  12. andl $-16, %esp
  13. movl $0, %eax
  14. subl %eax, %esp
  15. movl $1, -4(%ebp)
  16. movl $2, -8(%ebp)
  17. movl -8(%ebp), %eax
  18. addl -4(%ebp), %eax
  19. movl %eax, -12(%ebp)
  20. subl $8, %esp
  21. pushl -12(%ebp)
  22. pushl $.LC0
  23. call printf
  24. addl $16, %esp
  25. leave
  26. ret
  27. .Lfe1:
  28. .size main,.Lfe1-main
  29. .ident "GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)"


 
J'aimerais savoir quels sont les symboles des variables i j et k et de l'addition dans ce code ASM ...
 
THX


Message édité par Profil supprimé le 19-02-2004 à 20:17:12
Reply

Marsh Posté le 19-02-2004 à 20:16:53   

Reply

Marsh Posté le 19-02-2004 à 20:20:09    

movl $0, %eax
subl %eax, %esp  
 
[:mlc] ?
 
i se trouve en [ebp - 4] et j en [ebp - 8]
k en [ebp - 12]

Reply

Marsh Posté le 19-02-2004 à 20:22:10    

et pour l'addition ??? J'ai pas très bien pigé ...

Reply

Marsh Posté le 19-02-2004 à 20:23:48    

Code :
  1. movl $1, -4(%ebp);    //met 1 dans [ebp - 4]
  2. movl $2, -8(%ebp);    //met 2 dans [ebp - 8]
  3. movl -8(%ebp), %eax;  //charge [ebp-8] dans eax
  4. addl -4(%ebp), %eax;  //ajoute [ebp-4] a eax  
  5. movl %eax, -12(%ebp); //copie eax dans [ebp-12]


 
 
vois pas le pb ? c'est limpide


Message édité par chrisbk le 19-02-2004 à 20:25:05
Reply

Marsh Posté le 19-02-2004 à 20:25:25    

AH oui !!!! Nikel je viens de comprendre merci les gars

Reply

Marsh Posté le 19-02-2004 à 20:35:02    

j'espère que c'est pas du code censé être optimisé :D

Reply

Marsh Posté le 19-02-2004 à 22:21:11    

Jardy a écrit :

AH oui !!!! Nikel je viens de comprendre merci les gars  


 
le [:justeleblanc]

Reply

Marsh Posté le 19-02-2004 à 22:22:36    

bjone a écrit :

j'espère que c'est pas du code censé être optimisé :D


 
non n'importe quel compilo un brin decent aurait virer i,j,k et balancer directement 3 a printf :o

Reply

Marsh Posté le 19-02-2004 à 23:51:53    

ouais je sais :D j'avais bien vu le -O0 :D


Message édité par bjone le 20-02-2004 à 10:45:08
Reply

Marsh Posté le 20-02-2004 à 00:07:21    

ptain ca me donne envie de me mettre a l'assembleur :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed