global str terminal_namespace = "/dev/term/0"; global str new_line = "\n"; function main () int str_n $1; load_immediate 35 -> $0; call fib ($0) -> $0; int_to_string $0 -> 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) plex term $1; int msg_length $2; str nl $3; int nl_length $4; int mode $5; str term_ns $6; load_immediate 0 -> mode; load_address terminal_namespace -> term_ns; syscall OPEN term_ns mode term; string_length message -> msg_length; syscall WRITE term message msg_length; load_address new_line -> nl; string_length nl -> nl_length; syscall WRITE term nl nl_length; return;