33
Fonctionnement d’une machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Embed Size (px)

Citation preview

Page 1: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Fonctionnement d’une machine à pile :

Deux notions fondamentalesPush EmpilerPop Dépiler

Pile de données

3

4

Page 2: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Fonctionnement d’une machine à pile :

Deux notions fondamentalesPush EmpilerPop Dépiler

Pile de données

3

4

Push 5

5

Page 3: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Fonctionnement d’une machine à pile :

Deux notions fondamentalesPush EmpilerPop Dépiler

Pile de données

3

4

5

Pop

Page 4: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Avantages / Inconvénients

• Avantages– Opérations très simples– Diminue la taille des instructions binaires

(plus de référence à des registres)

• Inconvenients– Utilisations d’un élément en bas de la pile

dépiler toute la pile.– Obligation de recopier les éléments sur le haut de la pile

pour les utiliser plusieurs fois.

Page 5: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Fonctionnement d’une machine à pile :

Deux notions fondamentalesPush EmpilerPop Dépiler

Pile de données

3

4

Pop

Page 6: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Présentation du jeux d’instructions

HEX Mnemonic Signification

0x10 BIPUSH byte Empile un byte dans la pile.

0x60 IADD Dépile deux word et empile la somme de ces deux word en un word

0x64 ISUB Dépile deux word et empile la différence de ces deux word en un word

0x15 ILOAD num variable

Empile la variable locale.

0x36 ISTORE num variable

Dépile un word et le stocke dans les variables locales

Page 7: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

D’un langage haut niveaux aux jeux d’instructions de la machine

A=3+1B=4+5C=A+B

Langage de programmation

BIPUSH 3 #A=3+1BIPUSH 1IADDISTORE ABIPUSH 4 #B=4+5BIPUSH 5IADDISTORE BILOAD A #C=A+BILOAD BIADDISTORE C

Jeux d’instructions de la machine

Page 8: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=?B =?C =?

Pile de données

3

Page 9: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=?B =?C =?

Pile de données

3

1

Page 10: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=?B =?C =?

Pile de données

3

1

Page 11: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=?B =?C =?

Pile de données

3

1

Page 12: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=?B =?C =?

Pile de données

13

Page 13: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=?B =?C =?

Pile de données

13

4

Page 14: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=?B =?C =?

Pile de données

4

Page 15: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

Page 16: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

4

Page 17: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

4

5

Page 18: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

4

5

Page 19: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

4

5

Page 20: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

54

Page 21: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

54

9

Page 22: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

9

Page 23: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =?C =?

Pile de données

9

Page 24: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

Page 25: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

4

Page 26: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

4

9

Page 27: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

4

9

Page 28: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

4

9

Page 29: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

94

Page 30: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

94

13

Page 31: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

13

Page 32: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =?

Pile de données

13

Page 33: Fonctionnement dune machine à pile : Deux notions fondamentales Push Empiler Pop Dépiler Pile de données 3 4

Exemples d’exécution d’un programme

BIPUSH 3BIPUSH 1IADDISTORE ABIPUSH 4BIPUSH 5IADDISTORE BILOAD AILOAD BIADDISTORE C

Mémoire

A=4B =9C =13

Pile de données