diff --git a/5ComputationAndData.md b/5ComputationAndData.md index 4a473ea..98ae489 100644 --- a/5ComputationAndData.md +++ b/5ComputationAndData.md @@ -110,6 +110,8 @@ PUSHL a # analogue de PUSHG pour des variables locales (utilise FP) STOREL a # analogue de STOREG ``` +L'ordre des opérations est naturel, si on voit la pile de côté, bas à gauche, haut à droite. Une opération qui mange deux arguments prendra l'avant dernier argument comme premier argument et le dernier comme second argument. + ### Un premier exemple ``` @@ -255,6 +257,31 @@ print(i) ``` Testez votre code avec la MVàP. + +### Exercice +Produire du code MVàP qui s'inspire du code suivant et simule la lecture et le stockage d'un tableau avant de vider la pile. +La version ci-dessous ne vide pas la pile. +``` +# Boucle While +LABEL 19 +# le test qui va laisser une valeur 0 ou 1 en haut de la pile +# PUSHI 0 # pour faux, donc je saute après +# PUSHI 1 # pour vrai, donc je ne saute pas. +READ # on demande à l'utilisateur +JUMPF 18 # saut conditionnel vers le label 1 si le test est Faux sinon continue +# quelque chose +READ +# Fin du quelque chose +JUMP 19 +LABEL 18 +#La suite +PUSHI 666 +WRITE +POP +# Fin de la suite. +HALT +``` + ### Exercice Produire du code MVàP qui correspond au code python suivant.