aboutsummaryrefslogtreecommitdiff
path: root/examples/fibo.asm
blob: 5be421735a6b662d6129abb278ede990317caa0c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    ;; fibo(30)
    30
    fibo rel call
    ;; pop arguments and push return value to stack
    pop rv
    ;; call print_number (syscall number is 1)
    1 syscall
    exit
fibo: ;; function fibo(x)
    ;; if (x > 2) then
    0 ldarg 2 gt
    .else rel jz
    ;; return fibo(x - 2) + fibo(x - 1)
    0 ldarg 1 sub
    fibo rel call
    pop rv
    0 ldarg 2 sub
    fibo rel call
    pop rv add
    srv
    ret
.else:
    ;; else return 1
    1 srv
    ret