global str terminal_namespace = "/dev/term/0" global str new_line = "\n" function main () int n $0 int str_n $1 load_immediate 35 -> n call &fib n -> n int_to_string n -> str_n call &pln str_n exit 0 function fib (int n $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 else base_case return n function pln (str message $0) str ts $1 int mode $5 int msg_length $2 str nl $3 int nl_length $4 load_immediate &terminal_namespace -> ts load_immediate 0 -> mode syscall OPEN ts mode -> ts strlen message -> msg_length syscall WRITE ts message msg_length load_immediate &new_line -> nl strlen nl -> nl_length syscall WRITE ts nl nl_length return