diff options
-rw-r--r-- | apps/factorial.mu | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/apps/factorial.mu b/apps/factorial.mu index c9e241aa..164a7d45 100644 --- a/apps/factorial.mu +++ b/apps/factorial.mu @@ -1,8 +1,26 @@ +# usage is finicky for now: +# ./translate_mu apps/factorial.mu +# ./a.elf test # any args? run tests +# ./a.elf # no args? run factorial(5) fn main args: (addr array kernel-string) -> exit-status/ebx: int { -#? run-tests -#? result <- copy 0 - var tmp/eax: int <- factorial 5 - exit-status <- copy tmp + var a/eax: (addr array kernel-string) <- copy args + var tmp/ecx: int <- length a + $main-body: { + compare tmp, 1 + # if (len(args) != 1) run-tests() + { + break-if-= + run-tests + exit-status <- copy 0 + break $main-body + } + # if (len(args) == 1) factorial(5) + { + break-if-!= + var tmp/eax: int <- factorial 5 + exit-status <- copy tmp + } + } } fn factorial n: int -> result/eax: int { |