34 lines
501 B
Common 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")))
|