34 lines
760 B
Common Lisp
34 lines
760 B
Common Lisp
((code
|
|
(label main
|
|
(load-immediate $0 35)
|
|
(call &fib ($0) $0)
|
|
(int-to-string $1 $0)
|
|
(call &pln ($1) nil)
|
|
(halt 0))
|
|
(label fib
|
|
(load-immediate $1 2)
|
|
(jump-lt-int &base-case $0 $1)
|
|
(load-immediate $3 2)
|
|
(sub-int $4 $0 $3)
|
|
(call &fib ($4) $5)
|
|
(load-immediate $3 1)
|
|
(sub-int $4 $0 $3)
|
|
(call &fib ($4) $6)
|
|
(add-int $7 $6 $5)
|
|
(return $7)
|
|
(label base-case
|
|
(return $0)))
|
|
(label pln
|
|
(load-immediate $1 &terminal-namespace) ; get terminal device
|
|
(load-immediate $11 0)
|
|
(syscall OPEN $1 $1 $11)
|
|
(load-immediate $3 &new-line)
|
|
(string-length $2 $0)
|
|
(syscall WRITE $1 $0 $2)
|
|
(string-length $4 $3)
|
|
(syscall WRITE $1 $3 $4)
|
|
(return nil)))
|
|
(data
|
|
(label terminal-namespace "/dev/term/0")
|
|
(label new-line "\n")))
|