Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Désassemblage code C, je ne pige pas !! [ Divers / Général ] (bouba)

vendredi 26 mai 2006 à 02:07:29 | Désassemblage code C, je ne pige pas !!

bouba

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


vendredi 26 mai 2006 à 09:15:50 | Re : Désassemblage code C, je ne pige pas !!

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
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++

vendredi 26 mai 2006 à 11:14:55 | Re : Désassemblage code C, je ne pige pas !!

bouba

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


vendredi 26 mai 2006 à 11:17:00 | Re : Désassemblage code C, je ne pige pas !!

BruNews

Administrateur CodeS-SourceS
[ Lien ]

ciao...
BruNews, MVP VC++

vendredi 26 mai 2006 à 11:19:38 | Re : Désassemblage code C, je ne pige pas !!


Cette discussion est classé dans : code, main, eax, pige, esp


Répondre à ce message

Sujets en rapport avec ce message

Assembleur et tableau + linux + bof [ par flocic ] Bonjour, J'ai un petit pb de comprehension, j'ai un programme qui deborde au bout 44 octet  à cause d'un depassement d ela taille du tableau. Mais ce Probleme d'interuption [ par fresh_meat ] Salut,voila je suis un débutant en asm et j'ai un problème avec int 16h.Voici mon code :TITLE Add and Subtract (AddSubAlt.asm).386.MODEL ESP moins rapide que EAX ? [ par AlexMAN ] Bonjour, En fait, une kestion nous tarode (vecchio et moi) : ya til un intéret a travailler sur ESP par l'intermediaire d'un registre general tel que Un étrange plantage [ par fresh_meat ] Salut,voilà, j'ai un plantage avec un programme dont voici le code :TITLE Addition et soustraction (AddSubAlt.asm).386.MODEL flat,stdcall.STACK 4 Cycles de mov [ par vecchio56 ] Je me demandais si les instructions suivantes étaient équivalentes en termes de performances, ou si certaines d'entres elles demandaient plus de cycle AT&T erreur de compilation etc... [ par maminovadu75 ] Bonjour, j'aimerais me mettre a l'assembleur mais j'ai quelque problème.voici mon code morceau de code pour trier un tableau de int : ( mélange de C/C Intégration code asm avec Dev C++ [ par jean_fabrice ] Salut à tousJ'utilise comme compilateur C++, DevC++ 4.9.8.0. Le problème c'est que je n'arrive pas intégrer du code asm dans mes sources. Il me produi FPU et puissance d'un nombre [ par AlexMAN ] Bonjour, Voila, j'ai 'codé' 2 fonctions permettant de calculer un nombre n a une puissance exp (la fonction est bourrin, cad pas de decoupages de la f FPU et Vc++ [ par AlexMAN ] Bonsoir, J'aurais aimé savoir s'il etait possible de visionner le contenu des registres FPU sous VC++, parce que c'est assez embetant de ne pas voir c assembleur en ligne avec gcc [ par nalk_deen_mook ] Bonjour quelqu'un pourrait il mexpliquer pourquoi ce bout de code ne  fonctionne pas#include int main(){  int a=10,b; _asm("movl %1 %%eax";      "movl


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,265 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.