### On réserve de la mémoire. PUSHI 0 # R1 adresse 0 PUSHI 0 # R2 adresse 1 PUSHI 0 # N adresse 2 PUSHI 0 # nbrePart adresse 3 PUSHI 0 # Q Quotient f adresse 4. ### On initialise les variables ### Ici soit en demandant à l'utilisateur avec READ ### soit pour tester sans avoir à faire des entrées avec ### des PUSHI à la place de read PUSHI 100 #READ # lit une valeur, stocke sur la pile STOREG 0 # sauve cette valeur à l'adresse 0 PUSHI 200 #READ STOREG 1 PUSHI 4 # READ STOREG 2 ### On traverse l'arbre, toujours dans l'ordre ### gauche, droite, haut. ### on écrit les instructions correspondantes. ### PUSHI pour les constantes dans les feuilles de l'arbre ### PUSHG pour les variables dans les feuilles de l'arbre ### ADD, SUB, MUL, DIV pour les opérations (noeuds internes de l'arbre) PUSHG 0 # valeur de R1 PUSHG 1 # valeur de R2 ADD # J'ai fini R1+R2 PUSHI 2 # la constante 2 PUSHI 1 # la constante 1 PUSHG 2 # valeur de N PUSHI 2 # la constante 2 SUB # J'ai fini N-2 ADD # fini 1+(N-2) ADD # fini 2+(1+(N-2)) STOREG 3 # memoriser nbrepart PUSHG 3 DIV # fin du calcul STOREG 4 # mémoriser quotient familial ### On récupère les valeurs qu'on veut afficher PUSHG 3 WRITE POP # WRITE ne consomme pas la valeur, il faut l'enlever PUSHG 4 WRITE POP ### On vide la mémoire (autant de pop que de variables) POP POP POP POP POP HALT