undar-lang/test/fib.ul.ir

45 lines
809 B
Plaintext

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