Désassemblage code C, je ne pige pas !!

Résolu
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 26 mai 2006 à 02:07
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 26 mai 2006 à 11:19
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

4 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 mai 2006 à 09:15
C'est pour forcer un alignement de ESP sur 16 pour ne pas avoir d'exception sur accès aux registres xmm par exemple.

ciao...
BruNews, MVP VC++
3
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
26 mai 2006 à 11:14
Ok, tu connais un endroit ou je pourrais trouver un peu de doc la dessus, les registres XMM, une explication un peu plus précise pour que je puisse avancer un peu plus loins ensuite ?

Merci.

Bouba
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
26 mai 2006 à 11:17
0
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
26 mai 2006 à 11:19
Ok, merci.
0
Rejoignez-nous