La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

PILE voir l'animation: Diaporama / Visualiser ...

Présentations similaires


Présentation au sujet: "PILE voir l'animation: Diaporama / Visualiser ..."— Transcription de la présentation:

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


Télécharger ppt "PILE voir l'animation: Diaporama / Visualiser ..."

Présentations similaires


Annonces Google