Bonjour, je suis en train d'essayer de voir ce qui se passe derrière un code en C, mais la je bloque dès les trois premières lignes, j'ai donc testé avec le programme C le plus court qu'il soit , mais y'a toujours le même truc que je ne pige pas. Voici le code C utilisé.
main(){}
Je travail sous Linux avec un processeur 32bits (Amd Duron 1.8Ghz si ça peu servir).
Le code assembleur généré par gcc (gcc -S exemplevide.c) est le suivant
.file "exemplevide.c"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
andl $-16, %esp
movl $0, %eax
addl $15, %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
subl %eax, %esp
leave
ret
.size main, .-main
.ident "GCC: (GNU) 4.0.4 20060507 (prerelease) (Debian 4.0.3-3)"
.section .note.GNU-stack,"",@progbits
Les 2 premières lignes normal, empilage du Frame Pointer (FP), sauvegarde du pointeur de pile dans FP, mais la troisième ligne est vraiment bizare, pourquoi ce subl alors que je n'ai rien a empilé dans mon prgramme ? A quoi servent les lignes qui suivent ? Mon programme est vide, j'ai bien l'impression que du code ne sert à rien dans tout ça!
Merci pour vos reps.
Bouba