function main () int n is $0 int str_n is $1 load_immediate 35 -> n call fib n -> n int_to_string n -> str_n call pln str_nn exit 0 function fib (int n is $0) load_immediate 2 -> $1 jump_lt_int &base_case n $1 load_immediate 2 -> $3 sub_int n $3 -> $4 call fib $4 -> $5 load_immediate 1 -> $3 sub_int n $3 -> $4 call fib $4 -> $6 add_int $6 $5 -> $7 return $7 &base_case return n function pln (str message is $0) str ts is $1 int mode is $5 int msg_length is $2 str nl is $3 int nl_length is $4 load_heap_immediate ts "/dev/term/0" # get terminal device load_immediate 0 -> mode syscall OPEN ts mode -> ts strlen message -> msg_length syscall WRITE ts message msg_length load_heap_immediate "\n" -> nl strlen nl -> nl_length syscall WRITE ts nl nl_length return