67 lines
1.5 KiB
Plaintext
67 lines
1.5 KiB
Plaintext
### 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
|