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

© Alexandre Parodi - 2005 TITRE PILE voir l'animation: Diaporama / Visualiser... avancer: Barre d'espace reculer: p.

Présentations similaires


Présentation au sujet: "© Alexandre Parodi - 2005 TITRE PILE voir l'animation: Diaporama / Visualiser... avancer: Barre d'espace reculer: p."— Transcription de la présentation:

1

2 © Alexandre Parodi TITRE PILE voir l'animation: Diaporama / Visualiser... avancer: Barre d'espace reculer: p

3 © Alexandre Parodi DEFINITION PILE ("STACK") = zone de la mémoire où stocker temporairement des informations par empilage et dépilage

4 © Alexandre Parodi LIFO = "Last In - First Out" dernier entré - premier sorti

5 © Alexandre Parodi EMPILEMENT EMPILEMENT DE R0 babe Donnée à empiler Dernière donnée empilée 1 ère case disponible Données empilées Cases disponibles Pile = zone de la mémoire

6 © Alexandre Parodi PUSH PuSH Word from R0 babe

7 © Alexandre Parodi pam PUSH bifbof AVANT SP pointe sur la donnée au sommet de la pile "Top Of Stack" babe SP est le pointeur de pile "Stack Pointer" 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

8 © Alexandre Parodi SP SP PUSH DECREMENTATION DE SP babe pam SP pointe provisoirement sur la 1 ère case disponible bifbof

9 © Alexandre Parodi PUSH SAUVEGARDE DE R0 R0 M[SP] pam babe bifbof babe

10 © Alexandre Parodi PUSH APRES pam babe SP pointe à nouveau sur la dernière donnée empilée

11 © Alexandre Parodi PROGRAMME DE PUSH 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

12 © Alexandre Parodi MODE BASE PRE-DEC. 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

13 © Alexandre Parodi PuSh Word 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

14 © Alexandre Parodi DEPILEMENT POP Word to R1 babe DEPILEMENT DANS R1 Dernière donnée empilée à récupérer Registre où charger cette donnée POP

15 © Alexandre Parodi PoP Word AVANT pam POP Word to R SP pointe sur la donnée au sommet de la pile SP est le pointeur de pile "Stack Pointer" babe

16 © Alexandre Parodi PoP Word CHARGEMENT DE R1 R1 M[SP] pam babe 0101 babe

17 © Alexandre Parodi SP SP PoP Word INCREMENTATION DE SP babe pam SP pointe sur la dernière donnée empilée avant celle qui vient d'être récupérée babe

18 © Alexandre Parodi pam PoP Word APRES babe SP pointe sur le sommet de pile La case au-dessus est à nouveau disponible babe

19 © Alexandre Parodi PROGRAMME DE POP LDW R0, (SP) ; // charge R0 avec le // sommet de pile ADQ 2, SP ; // incrémente SP Une instruction spéciale n'est pas nécessaire !

20 © Alexandre Parodi MODE BASE POST-INC. Utilisation du mode basé post-incrémenté: LDW R0, (SP)+ ; // charge R0 avec le // sommet de pile puis // incrémente SP

21 © Alexandre Parodi PoP Word 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

22 © Alexandre Parodi GESTION DOCTETS Comment empiler et dépiler des octets ("Bytes") ? PuSh Byte PoP Byte Avec les instructions: STB R, -(SP) LDB R, (SP)+

23 © Alexandre Parodi pam STB R0, -(SP) ba be bof AVANT PUSH Byte from R0 SP pointe sur la dernière donnée empilée bif La donnée à empiler est un octet

24 © Alexandre Parodi SP SP STB R0, -(SP) DECREMENTATION DE SP pam SP pointe sur une case disponible de la taille de la donnée, donc ici d'un octet bif bof ba be

25 © Alexandre Parodi STB R0, -(SP) SAUVEGARDE DE R0 R0 M[SP] pam be bif bof OCTET ba be

26 © Alexandre Parodi STB R0, -(SP) APRES pam be bif ba be

27 © Alexandre Parodi INITIALISATION La base de pile doit être spécifiée avant usage. LDW SP, #2048 // initialise SP

28 © Alexandre Parodi DEBORDEMENT Lorsque l'on empile trop d'informations, la pile déborde ("stack overflow"), et écrase les données juste au dessus.

29 © Alexandre Parodi pam DEBORDEMENT vector AVANT babe PUSH Word from R0 Limite haute de la pile

30 © Alexandre Parodi FE DEBORDEMENT DECREMENTATION DE SP AU DESSUS DE LA LIMITE babe pam vector

31 © Alexandre Parodi FE DEBORDEMENT SAUVEGARDE AU DELA DE LA LIMITE DE PILE pam babe vector babe La donnée système "vector" a été écrasée

32 © Alexandre Parodi USAGE 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.

33 © Alexandre Parodi FIN DE LA PRESENTATION

34 © Alexandre Parodi FIN DE LA PRESENTATION


Télécharger ppt "© Alexandre Parodi - 2005 TITRE PILE voir l'animation: Diaporama / Visualiser... avancer: Barre d'espace reculer: p."

Présentations similaires


Annonces Google