1
# Le programme principal
2
read # lecture de l'argument (dans r 1)
3
jmp fact, ra # calcul de la factorielle
4
write # �criture du r�sultat (r 1)
7
# La fonction factorielle(N)
8
# L'argument N est dans r 1. Le r�sultat est mis dans r 1.
9
fact: braz r 1, fact_0 # N = 0 ?
10
sub sp, 8, sp # r�serve deux places dans la pile
11
store sp, 0, ra # sauvegarde de l'adresse de retour
12
store sp, 4, r 1 # et de la valeur de N
14
jmp fact, ra # appel r�cursif sur N-1
15
load sp, 4, r 2 # r�cup�ration de la valeur de N
16
mult r 1, r 2, r 1 # calcul de N * fact(N-1)
17
load sp, 0, ra # r�cup�ration de l'adresse de retour
18
add sp, 8, sp # et de la place en pile
19
jmp ra, r 0 # retour � l'appelant
20
fact_0: add r 0, 1, r 1 # mettre 1 dans r1
21
jmp ra, r 0 # retour � l'appelant