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

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

Embed Size (px)

Citation preview

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

© A

lexa

ndre

Par

odi -

200

5

TITRE

PILEPILE

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

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

© A

lexa

ndre

Par

odi -

200

5

DEFINITION

PILE("STACK")

=zone de la mémoire

où stockertemporairementdes informations

par empilage et dépilage

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

© A

lexa

ndre

Par

odi -

200

5

LIFO

LIFO=

"Last In - First Out"

dernier entré -

premier sorti

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 Pile1006 1007 "Stack"1008 1009

R0 100A 100B

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 lamémoire

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 Pile1006 1007 "Stack"1008 1009

R0 100A 100B

PUSH

PuSH Word from R0

babebabebabebabe babe

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

1006 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

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

SP SP-2

1004

PUSH

DECREMENTATION DE SP

babe

pam1006

-2

SP pointe provisoirementsur la 1ère case disponible

bifbof

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

1004

PUSH

SAUVEGARDE DE R0

R0 M[SP]

pambabebifbof

babe

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

1004

PUSH

APRES

pam

babe

babe

SP pointe à nouveau sur la dernière donnée empilée

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

© A

lexa

ndre

Par

odi -

200

5

PROGRAMME DE PUSH

Une instruction spécialen'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

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

© A

lexa

ndre

Par

odi -

200

5

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

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

© A

lexa

ndre

Par

odi -

200

5

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

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 Pile1006 1007 "Stack"1008 1009

R1 100A 100B

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

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R1 100A 100B

1004

PoP Word

AVANT

pam

POP Word to R1

0101

SP pointe sur la donnée au sommet de la pile

SP est le pointeur de pile"Stack Pointer"

babe

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R1 100A 100B

1004

PoP Word

CHARGEMENT DE R1 R1 M[SP]

pam

babe0101

babe

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R1 100A 100B

SP SP+2

1006

PoP Word

INCREMENTATION DE SP

babe

pam1004

+2

SP pointe sur la dernière donnée empilée avant celle qui vient d'être récupérée

babe

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R1 100A 100B

1006 pam

PoP Word

APRES

babe

SP pointe sur le sommet de pile

La case au-dessus est à nouveau disponible

babe

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

© A

lexa

ndre

Par

odi -

200

5

PROGRAMME DE POP

LDW R0, (SP) ; // charge R0 avec le // sommet de pile

ADQ 2, SP ; // incrémente SP

Une instruction spécialen'est pas nécessaire !

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

© A

lexa

ndre

Par

odi -

200

5

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

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

© A

lexa

ndre

Par

odi -

200

5

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

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

© A

lexa

ndre

Par

odi -

200

5

GESTION D’OCTETS

Comment empiler et dépilerdes octets ("Bytes") ?

PuSh BytePoP Byte

Avec les instructions:

STB R, -(SP)LDB R, (SP)+

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

1006 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 à empilerest un octet

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

1006

SP SP-1

1005

STB R0, -(SP)

DECREMENTATION DE SP

pam

-1

SP pointe sur une case disponible de la taille de la donnée,

donc ici d'un octet

bif bof

ba be

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

1005

STB R0, -(SP)

SAUVEGARDE DE R0

R0 M[SP]

pambebif bof

OCTET

ba be

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

© A

lexa

ndre

Par

odi -

200

5

1000 1001

1002 1003

1004 1005 PileSP 1006 1007 "Stack"

1008 1009

R0 100A 100B

1005

STB R0, -(SP)

APRES

pambebif

ba be

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

© A

lexa

ndre

Par

odi -

200

5

INITIALISATION

La base de pile doit être spécifiée avant usage.

LDW SP, #2048 // initialise SP

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

© A

lexa

ndre

Par

odi -

200

5

DEBORDEMENT

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

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

© A

lexa

ndre

Par

odi -

200

5

05FA données05FC système05FE

SP 0600

0602 PileR0 0604 "Stack"

0600 pam

DEBORDEMENT

vector

AVANT

babe

PUSH Word from R0

Limite haute de la pile

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

© A

lexa

ndre

Par

odi -

200

5

05FA données05FC système05FE

SP 0600

0602 PileR0 0604 "Stack"

05FE

DEBORDEMENT

DECREMENTATION DE SP AU DESSUS

DE LA LIMITE

babe

pam0600

-2vector

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

© A

lexa

ndre

Par

odi -

200

5

05FA données05FC système05FE

SP 0600

0602 PileR0 0604 "Stack"

05FE

DEBORDEMENT

SAUVEGARDE AU DELA DE LA LIMITE DE PILE

pambabevector

babe

La donnée système "vector" a été écrasée

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

© A

lexa

ndre

Par

odi -

200

5

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.

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

© A

lexa

ndre

Par

odi -

200

5

FIN DE LA PRESENTATION

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

© A

lexa

ndre

Par

odi -

200

5

FIN DE LA PRESENTATION