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 : Assembleur et tableau + linux + bof [ Archives / Aide a la programmation Unix ] (flocic)

mercredi 25 mai 2005 à 21:12:29 | Assembleur et tableau + linux + bof

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 que je comprend pas c'ets que ton le oce en assembleur il reserve 56 octet (Ox38) dans la pile au lieu de 0x20.

Peux on m'expliquer ou dans la partie asm je peux voir la reel taille du tableau ?

Merci d'avance de vos réponses,

code en C :

void return_input (void){
        char array[30];
        gets (array);
        printf("%s\n", array);
}

main() {
        return_input();
        return 0;
}


code en asm :

Dump of assembler code for function main:
0x080483ea <main+0>:    push   %ebp
0x080483eb <main+1>:    mov    %esp,%ebp
0x080483ed <main+3>:    sub    $0x8,%esp
0x080483f0 <main+6>:    and    $0xfffffff0,%esp
0x080483f3 <main+9>:    mov    $0x0,%eax
0x080483f8 <main+14>:   sub    %eax,%esp
0x080483fa <main+16>:   call   0x80483c4 <return_input>
0x080483ff <main+21>:   mov    $0x0,%eax
0x08048404 <main+26>:   leave
0x08048405 <main+27>:   ret
End of assembler dump.
(gdb) disas return_input
Dump of assembler code for function return_input:
0x080483c4 <return_input+0>:    push   %ebp
0x080483c5 <return_input+1>:    mov    %esp,%ebp
0x080483c7 <return_input+3>:    sub    $0x38,%esp <--- Reservation de 0x38 octet
0x080483ca <return_input+6>:    lea    0xffffffd8(%ebp),%eax
0x080483cd <return_input+9>:    mov    %eax,(%esp)
0x080483d0 <return_input+12>:   call   0x80482c4 <_init+40>
0x080483d5 <return_input+17>:   lea    0xffffffd8(%ebp),%eax
0x080483d8 <return_input+20>:   mov    %eax,0x4(%esp)
0x080483dc <return_input+24>:   movl   $0x8048524,(%esp)
0x080483e3 <return_input+31>:   call   0x80482e4 <_init+72>
0x080483e8 <return_input+36>:   leave
0x080483e9 <return_input+37>:   ret



dimanche 29 mai 2005 à 19:45:36 | Re : Petit coup de pouce

ToutEnMasm

Bonjour,
Il me semble que de passer par un listing de désassemblage pour deviner ce qui est écrit dans le source part d'une démarche un peu tordue.

30 char = 30 bytes (30 fois 8 bits)

gets Aurait-elle besoin de plus de mémoire ?

                         ToutEnMasm
         




Cette discussion est classé dans : mov, return, ebp, eax, esp


Répondre à ce message

Sujets en rapport avec ce message

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 Quels sont les parametres (nombre, taille...) [ par Renfield ] Bonjour,on peut appeler RunDll32 pour executer des fonctions contenues dans des dll...j'aimerais m'affranchir de cette étape, mais j'ai pour cela beso Probleme de compilation [ par noel70 ] Bonjour a tous.voila, sur une fenetre, j'ai mis un bouton, et quand j clique sur ce bouton, j'aimerais faire apparaitre une autre fenetre.Alors ce que Une mémoire "read" [ par msteve ] Bonsoir, Je suis débutant et j'ai recopié un programme test. Je parviens à l'assembler, puis à créer un .exe ; quend je lance l'exe j'obtiens la boîte declaration externe + news Kmdkit [ par patatalo ] salut, du nouveau pour les fondus de ring 0 sous NT: http://www.website.masmforum.com/tutorials/kmdtute/ ( kmd = kernel mode drivers ) avec masm32, exception 13 lors du scan memoire haute [ par patatalo ] salut, pourquoi ce code de detection de memoire en mode 32 bits sans paging me donne une exception 13 sur certaines cartes meres ( ASUS ) a l'adresse Peut on mieux faire ? [ par spiky31 ] Bonjour Voila j'ai commencé ce matin a programmer en assembleur intel et j'aurais voulu avoir votre avis (Je me considére pas vraiment comme un noob j'ai un prob avec mon buffer ; ya pas d'amuses gueules (masm32) [ par papiboff ] bj si je mets le buffer "somme " en dd avec charge eax et que j'ajoute deux 'dec ebx ' , ben , marche pas correctement ; (pêrqué ???? = en french) sv afficher une image jpeg avec la fonction StretchDIBits ? [ par mitch19 ] bonjour, j'essaye depuis quelques temps d'afficher une image jpeg avecla commande  StretchDIBits, en vain ! mon programme plante lamentablement !Si qu inverser une chaine [ par MrdJack ] salut, je suis sur un projet de calculatrice me permettant de faire des calculs avec des nombres tres grands. chaque nombre est stocké dans la memoire


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,218 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é.