clempar55
Messages postés59Date d'inscriptionsamedi 1 janvier 2005StatutMembreDernière intervention 4 avril 2007
-
6 déc. 2006 à 18:25
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
7 déc. 2006 à 00:50
Voila je vois souvent sur le forum des phrases telles que "tel objet a
été créé sur la pile/le tas", "tel paramètre a été dépilé".
J'ai enfin décidé d'essayer de comprendre comment marchent et a quoi servent la pile et le tas, ainsi que les differentes déclarations __stdcall ou autres.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 6 déc. 2006 à 21:22
Un bon livre sur l'assembleur me parait le plus utile pour bien comprendre cela.
(Assembleur X86 CampusPresse (surtout pas celui en poche !))
Sinon internet et les moteurs de recherche !
Bonne chance.
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 7 déc. 2006 à 00:50
Salut,
La pile = Stack: C'est une zone dans l'espace mémoire de l'exécutable. Elle lui est allouée dès son lancement par le système. Elle sert à sauvegarder temporairement des valeurs. Empiler veut dire mettre dans la pile. Dépiler est l'action inverse qui consiste à retirer de la pile. Le pointeur de la pile est incrémenté ou décrémenté selon l'un des deux cas. Le premier élément empilé sera le dernier à être déplilé. Il s'agit du principe LIFO (Last In First Out). La pile est notamment utilisée pour passer des paramètres à une fonction.
Le tas = Heap: C'est une zone mémoire dans l'espace mémoire de l'exécutable. Elle lui est réservée dès son lancement par le système. Le programme pourra allouer de la mémoire dans le tas pour ses besoins. Par défaut, Windows réserve 1Mo de tas pour chaque programme. Cette valeur augmentera par petits paliers si le programme en demande plus.
__stdcall, __cdecl ou __fastcall permettent de préciser la convention d'appel d'une fonction. Selon le cas, la pile sera utilisée ou non pour le passage des paramètres. Cela précise également si c'est la fonction qui assure le dépilage ou non.