1 / 33

TITRE

PILE. voir l'animation: Diaporama / Visualiser ... avancer : Barre d'espace reculer : p. TITRE. PILE ("STACK") = zone de la mémoire où stocker temporairement des informations par empilage et dépilage. DEFINITION. LIFO = "Last In - First Out"

silas
Download Presentation

TITRE

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PILE voir l'animation: Diaporama / Visualiser ... avancer: Barre d'espace reculer: p TITRE

  2. 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. 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. AVANT SP est le pointeur de pile "Stack Pointer" bifbof pam 1006 babe SP pointe donc sur la dernière donnée empilée SP pointe sur la donnée au sommet de la pile "Top Of Stack" Il contient donc l'adresse de la dernière donnée empilée PUSH Word from R0 PUSH

  7. DECREMENTATION DE SP -2 SP  SP-2 bifbof pam 1006 1004 babe SP pointe provisoirement sur la 1ère case disponible PUSH

  8. SAUVEGARDE DE R0 R0  M[SP] babe bifbof pam 1004 babe PUSH

  9. 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. 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 instructionspé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 Dernière donnée empilée à récupérer POP babe Registre où charger cette donnée POP Word to R1 DEPILEMENT

  14. 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. INCREMENTATION DE SP +2 SP  SP+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. 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. 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 instructionspé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. 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. AVANT SP pointe sur la dernière donnée empilée bof bif pam 1006 ba be La donnée à empiler est un octet PUSH Byte from R0 STB R0, -(SP)

  23. DECREMENTATION DE SP -1 SP  SP-1 bof bif pam 1006 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 OCTET R0  M[SP] be bof bif pam 1005 ba be STB R0, -(SP)

  25. APRES be bif 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 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. SAUVEGARDE AU DELA DE LA LIMITE DE PILE La donnée système "vector" a été écrasée babe vector 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

More Related