Code en pseudo python à traduire en MVàP j = 1 i = 0 i = j while i < 10: i += 1 print(i) Pour le début (affectation des variables) j = 1 i = 0 i = j PUSHI 1 # j adresse 0 PUSHI 0 # i adresse 1 PUSHG 0 # récupère j STOREG 1 # affecte à i Pour la structure de la boucle While, il suffit de recopier l'exemple du cours. LABEL 0 # le test qui va laisser une valeur 0 ou 1 en haut de la pile JUMPF 1 # saut conditionnel vers le label 1 si le test est Faux sinon continue # quelque chose JUMP 0 LABEL 1 #La suite Il faut qu'on traduise les 3 morceaux de code : test, corps de la boucle, la suite. Le test. i < 10 PUSHG 1 # valeur de i PUSHI 10 INF Le corps de la boucle. i += 1 # même chose que i = i+1 PUSHG adresse de i PUSHI 1 ADD STOREG adresse de i Comme i habite à l'adresse 1 ça donne ce code. PUSHG 1 PUSHI 1 ADD STOREG 1 la suite. print(i) en pratique on récupère i, on utilise WRITE, on fait POP pour nettoyer la pile. PUSHG 1 # adresse de i vaut 1 WRITE POP Solution complète. PUSHI 1 # j adresse 0 PUSHI 0 # i adresse 1 PUSHG 0 # récupère j STOREG 1 # affecte à i LABEL 0 # test PUSHG 1 PUSHI 10 INF JUMPF 1 #corps boucle PUSHG 1 PUSHI 1 ADD STOREG 1 JUMP 0 LABEL 1 #La suite PUSHG 1 WRITE POP # Effacer les variables POP POP HALT ### Autre exercice donné au tableau Expression avec deux variables x et y qu'on demande à l'utilisateur PUSHI 0 # x adresse 0 PUSHI 0 # y adresse 1 # demande user val x # READ PUSHI 10 STOREG 0 # demande user val y # READ PUSHI 3 STOREG 1 # calcul de # (x+3)*y+4*x # Parenthesage egal arbre de syntaxe comme au tableau # de base en haut et de gauche à droite on écrit le code MVàP # x+3 PUSHG 0 PUSHI 3 ADD PUSHG 1 MUL PUSHI 4 PUSHG 0 MUL ADD WRITE POP # effacer var x et y POP POP HALT