Pointeur de l'image, epb, et l'adresse de retour
L'image suivante est de wikipedia entrée sur la pile d'appel et il y a quelque chose que je ne comprends pas complètement:
Je pensais que le pointeur de l'image qui est stockée dans le registre ebp est initialisé en tant que tel dans le prologue*:
push ebp ; Preserve current frame pointer
mov ebp, esp ; Create new frame pointer pointing to current stack top
sub esp, 20 ; allocate 20 bytes worth of locals on stack.
Si oui, alors ne pas le pointeur de l'image dans l'image est pointée après l'adresse de retour et avant qu'elle devrait être l'image précédente adresse de pointeur et avant que l'adresse de retour? Ce qui me manque?
Merci!
*Tiré de: Quel est exactement le pointeur de la base et le pointeur de pile? De quoi ont-ils point?
OriginalL'auteur SpeksETC | 2010-12-13
Vous devez vous connecter pour publier un commentaire.
Oui, vous avez raison, l'image d'un pointeur sur une adresse où est stockée l'image précédente pointeur, avant l'adresse de retour. L'image qui serait
dernier élément est au sommet de la pile
OriginalL'auteur Abyx
Lorsque la fonction est appelée. L'adresse de retour est poussé sur la pile et le pointeur de pile pointe maintenant vers l'adresse de retour.
C'est ce qui se passe à l'intérieur de la fonction:
Le résultat est:
EBP pointe à la valeur précédente de EBP.
ESP est pointé à plus de 20 octets à partir de l'ESP. Ces 20 octets sera utilisé pour les locaux de vars.
OriginalL'auteur Madhur Ahuja