Assembleur 80x86 | LEAVE |
---|---|
INTEL 80186+ | Leave |
Syntaxe
LEAVE |
Description
Cette instruction permet de libérer une zone de mémoire attribué par l'instruction «ENTER» lorsqu'on utilise des procédures dans des langages de programmation de haut niveau.
Remarques
- Libère le cadre de pile configuré par une instruction ENTER antérieure. L'instruction LEAVE copie le pointeur de cadre (dans le registre BP en mode réel ou mode protégé ou EBP dans les autres modes) dans le registre de pointeur de pile (SP en mode réel ou mode protégé ESP dans les autres modes), ceci libérant l'espace de pile alloué du cadre de la pile. L'ancien pointeur de cadre (le pointeur de cadre pour la procédure d'appel ayant été enregistré par l'instruction ENTER) est ensuite extrait de la pile dans le registre BP ou EBP, restaurant le cadre de pile de la procédure d'appel.
- Une instruction RET est généralement exécutée à la suite d'une instruction LEAVE pour retourner le contrôle du programme à la procédure d'appel.
- En mode 64 bits, la taille d'opération par défaut de l'instruction est de 64 bits; Le fonctionnement 32 bits ne peut pas être codé.
Algorithme
MODULE LEAVE SI taille de l'adresse de pile = 32 bits ALORS ESP ← EBP SINON SP ← BP FIN SI SI taille l'opérande = 32 bits ALORS EBP ← POP() SINON BP ← POP() FIN SI |
Mnémonique
Instruction | Opcode | Description |
---|---|---|
LEAVE | C9h | Fixe le pointeur de pile du registre SP à la valeur du registre BP et «POP BP». |
LEAVE | C9h | Fixe le pointeur de pile du registre ESP à la valeur du registre EBP et «POP EBP». Pas de préfixe pour le mode 64 bits. |
LEAVE | C9h | Fixe le pointeur de pile du registre RSP à la valeur du registre RBP et «POP RBP». |
Exceptions
Message | Mode réel | Virtuel 8086 | Mode protégé | Description |
---|---|---|---|---|
#SS(Pile) | X | X | X | Une adresse mémoire dépasse la limite du segment de pile ou n'est pas canonique |
#PF(Faute de page) | X | X | Une faute de page résultat de l'exécution de l'instruction | |
#AC(Vérifie l'alignement) | X | X | Un désalignement de la référence mémoire est effectué quand une vérification d'alignement est activé |
Voir également
Instruction assembleur 80x86 - Instruction ENTER
Références
Le livre d'Or PC, Martin Althaus, 1992, ISBN: 2-7361-0934-1, page 817
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions, Edition Advanced Micro Devices, Revision 3.14, September 2007, Publication No. 24594, page 147.
Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 2A: Instruction Set Reference, A-M, Edition Intel, Mars 2010, Publication No. 253666-034US, page 651 à 652.
Dernière mise à jour : Lundi, le 1 septembre 2014