Télécharger la présentation
Publié parOtes Lefrancois Modifié depuis plus de 10 années
1
PILE voir l'animation: Diaporama / Visualiser ...
avancer: Barre d'espace reculer: p TITRE
2
par empilage et dépilage
PILE ("STACK") = zone de la mémoire où stocker temporairement des informations par empilage et dépilage DEFINITION
3
LIFO = "Last In - First Out" dernier entré - premier sorti LIFO
4
Dernière donnée empilée
EMPILEMENT DE R0 1ère case disponible Cases disponibles Pile = zone de la mémoire Données empilées babe Donnée à empiler Dernière donnée empilée EMPILEMENT
5
babe babe babe babe babe PuSH Word from R0 PUSH
6
SP est le pointeur de pile "Stack Pointer"
AVANT SP est le pointeur de pile "Stack Pointer" bifbof pam 1006 babe SP pointe sur la donnée au sommet de la pile "Top Of Stack" SP pointe donc sur la dernière donnée empilée Il contient donc l'adresse de la dernière donnée empilée PUSH Word from R0 PUSH
7
SP pointe provisoirement sur la 1ère case disponible
DECREMENTATION DE SP SP SP-2 -2 bifbof 1006 pam 1004 babe SP pointe provisoirement sur la 1ère case disponible PUSH
8
SAUVEGARDE DE R0 R0 M[SP] bifbof babe pam 1004 babe PUSH
9
la dernière donnée empilée
APRES babe pam 1004 babe SP pointe à nouveau sur la dernière donnée empilée PUSH
10
Une instruction spéciale n'est pas nécessaire !
ADQ -2, SP ; // décrémente SP; // SP pointe ensuite sur // la 1ère case disponible STW R0, (SP) ; // stocke le contenu de R0 // ds la case pointée par SP // donc la 1ère disponible PROGRAMME DE PUSH
11
“basé pré-décrémenté”:
Utilisation du mode “basé pré-décrémenté”: STW R0, -(SP) ; // décrémente SP, puis // stocke le contenu de R0 // ds la case pointée par SP MODE BASE PRE-DEC.
12
Dans beaucoup de machines,
il existe une instruction spécifique et optimisée pour SP: PuSh Word PSW R0 ; // décrémente SP, puis // stocke le contenu de R0 // ds la case pointée par SP PuSh Word
13
DEPILEMENT DANS R1 POP Dernière donnée empilée à récupérer babe
Registre où charger cette donnée POP Word to R1 DEPILEMENT
14
SP est le pointeur de pile "Stack Pointer"
AVANT SP est le pointeur de pile "Stack Pointer" babe pam 1004 0101 SP pointe sur la donnée au sommet de la pile POP Word to R1 PoP Word
15
CHARGEMENT DE R1 R1 M[SP] babe pam 1004 babe 0101 PoP Word
16
SP pointe sur la dernière donnée empilée
INCREMENTATION DE SP SP SP+2 +2 babe pam 1004 1006 babe SP pointe sur la dernière donnée empilée avant celle qui vient d'être récupérée PoP Word
17
est à nouveau disponible
APRES La case au-dessus est à nouveau disponible babe pam 1006 babe SP pointe sur le sommet de pile PoP Word
18
Une instruction spéciale n'est pas nécessaire !
LDW R0, (SP) ; // charge R0 avec le // sommet de pile ADQ 2, SP ; // incrémente SP PROGRAMME DE POP
19
“basé post-incrémenté”:
Utilisation du mode “basé post-incrémenté”: LDW R0, (SP)+ ; // charge R0 avec le // sommet de pile puis // incrémente SP MODE BASE POST-INC.
20
Dans beaucoup de machines,
il existe une instruction spécifique et optimisée pour SP: PoP Word ou PulL Word PPW R0 ; // charge R0 avec le // sommet de pile puis // incrémente SP PoP Word
21
STB R, -(SP) LDB R, (SP)+ Comment empiler et dépiler
des octets ("Bytes") ? PuSh Byte PoP Byte Avec les instructions: STB R, -(SP) LDB R, (SP)+ GESTION D’OCTETS
22
dernière donnée empilée
AVANT SP pointe sur la dernière donnée empilée bif bof pam 1006 ba be La donnée à empiler est un octet PUSH Byte from R0 STB R0, -(SP)
23
de la taille de la donnée,
DECREMENTATION DE SP SP SP-1 -1 bif bof 1006 pam 1005 ba be SP pointe sur une case disponible de la taille de la donnée, donc ici d'un octet STB R0, -(SP)
24
SAUVEGARDE DE R0 R0 M[SP] be bif bof pam ba be OCTET STB R0, -(SP)
1005 OCTET ba be STB R0, -(SP)
25
APRES bif be pam 1005 ba be STB R0, -(SP)
26
La base de pile doit être spécifiée avant usage.
LDW SP, #2048 // initialise SP INITIALISATION
27
Lorsque l'on empile trop d'informations, la pile déborde ("stack overflow"), et écrase les données juste au dessus. DEBORDEMENT
28
AVANT vector pam babe Limite haute de la pile PUSH Word from R0
0600 babe Limite haute de la pile PUSH Word from R0 DEBORDEMENT
29
DECREMENTATION DE SP AU DESSUS
DE LA LIMITE -2 vector pam 0600 05FE babe DEBORDEMENT
30
AU DELA DE LA LIMITE DE PILE La donnée système "vector" a été écrasée
SAUVEGARDE AU DELA DE LA LIMITE DE PILE La donnée système "vector" a été écrasée vector babe pam 05FE babe DEBORDEMENT
31
La pile est utilisée pour stocker des informations en LIFO:
informations lors de l'appel et du retour des sous-programmes; informations locales à un bloc ; données intermédiaires lors du calcul. USAGE
32
FIN DE LA PRESENTATION
33
FIN DE LA PRESENTATION
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.