salut,
la pile est utilisée pour stocker des variable locales a une fonction et pour passer des parametres a cette fonction. La memoire allouée dans la pile est toujours éphemere et sera libérée a la sortie de la fonction. Ce qui est logique car sinon, la fonction appelante n'aurait plus la meme base de pile.
toute la memoire de ton process est paginée que ce soit le code, les données, la pile,le tas ou quoi que ce soit. ( je l'ai déjà dit a ToutEnMasm mais il n'écoute rien ).
le tas te permet d'effectuer des allocations de memoire qui vont pouvoir etre utilisés en dehors de la fonction qui les a crées. exemple: new et delete du c++
autrement dit:
new MACRO sze invoke GlobalAlloc,GPTR,sze ; dans le tas ENDM
delete MACRO pbloc invoke GlobalFree,pbloc ENDM
fcttest PROC param1:DWORD,param2:DWORD LOCAL local1:DWORD ; dans la pile new 1000h ; dans le tas ret 8 ; desalloue variables locales + params de la pile fcttest ENDP
main PROC push param2 ; dans la pile push param1 ; dans la pile call fcttest ; retour de fonction dans la pile delete eax ; libere le bloc alloué dans le tas main ENDP
@++
|