undar-lang/test/fib.asm

35 lines
467 B
NASM

.text
main:
load $0 35
push $0
call &fib
pop $0
itos $1 $0
load $2, &terminal_str
slen $4, $3
sysc DEVICE_WRITE, 3, $2 ; print(sum.toS())
halt
fib:
popi $0
load $1 2
lodi $2 &base_case
jlti $2 $0 $1
load $2 2
subi $4 $0 $3
push $4
call &fib
load $2 1
subi $4 $0 $3
push $4
call &fib
pop $4
pop $5
addi $6 $5 $4
push $6
retn
base_case:
push $0
retn
.data
terminal_str: "/dev/term/0"