Fonction Prologue et un Épilogue en C
Je sais données dans les appels de fonctions imbriquées aller à la Pile.La pile elle-même met en œuvre, étape par étape, la méthode pour stocker et récupérer des données à partir de la pile de fonctions appelées ou de la rentabilité.Le nom de ces méthodes est la plus connue en tant que Prologue et un Épilogue.
J'ai essayé sans succès de documents de recherche sur ce sujet. Savez-vous toutes les ressources ( site,vidéo, article ) sur la façon dont la fonction prologue et un épilogue travaille généralement en C ? Ou si vous pouvez l'expliquer serait encore mieux.
P. S : je veux juste quelque point de vue général, pas trop détaillé.
- Vous pouvez rechercher du matériel sur des compilateurs et de génération de code.
Vous devez vous connecter pour publier un commentaire.
Il ya beaucoup de ressources là-bas qui expliquent cela:
pour n'en nommer que quelques-unes.
Dans le fond, vous avez un peu décrits, "la pile" sert à plusieurs fins dans l'exécution d'un programme:
La prolouge est ce qui se passe au début d'une fonction. Sa responsabilité est de mettre en place le frame de pile de la fonction appelée. L'épilogue est exactement le contraire: c'est ce qui arrive en dernier dans une fonction, et son but est de restaurer le cadre de la pile de l'appel (parent) de la fonction.
Dans IA-32 (x86) cdecl, le
ebp
registre est utilisé par la langue de garder une trace de la fonction du cadre de pile. Leesp
registre est utilisé par le processeur à point pour l'ajout le plus récent (la valeur la plus élevée) sur la pile.La
call
instruction fait deux choses: d'Abord, il pousse l'adresse de retour sur la pile, puis il accède à la fonction appelée. Immédiatement après lacall
,esp
points pour l'adresse de retour sur la pile.Puis le prologue est exécutée:
À ce stade, nous avons:
L'épilogue:
Fonction C Conventions d'Appel et de la Pile explique bien le concept d'une pile d'appel
prologue de Fonction explique brièvement le code assembleur et le comment et le pourquoi.
La gen sur la fonction perilogues
Chaque fonction est identique d'un prologue(Le départ de la fonction de code) et l'épilogue ( La fin d'une fonction).
Prologue: La structure du Prologue est ressembler à:
push ebp
mov esp,ebp
Épilogue: La structure du Prologue est ressembler à:
laisser
ret
Plus en détail : ce qui est un Prologue et un Épilogue