undar-lang/test/fib.asm.lisp

34 lines
501 B
Common Lisp

(code (
(label main)
(load $0 35)
(push $0)
(call &fib)
(pop $0)
(itos $1 $0)
(load $2, &terminal_str)
(strlen $4, $3)
(sysc DEVICE_WRITE, $2, $1, $4)
(halt)
(label 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)
(return)
(label base_case)
(push $0)
(return))
(data (terminal_str: "/dev/term/0")))