diff options
Diffstat (limited to 'apps/factorial.mu')
-rw-r--r-- | apps/factorial.mu | 60 |
1 files changed, 0 insertions, 60 deletions
diff --git a/apps/factorial.mu b/apps/factorial.mu deleted file mode 100644 index 15ac8cf4..00000000 --- a/apps/factorial.mu +++ /dev/null @@ -1,60 +0,0 @@ -# compute the factorial of 5, and return the result in the exit code -# -# To run: -# $ ./translate_mu apps/factorial.mu -# $ ./a.elf -# $ echo $? -# 120 -# -# You can also run the automated test suite: -# $ ./a.elf test -# Expected output: -# ........ -# Every '.' indicates a passing test. Failing tests get a 'F'. -# There's only one test in this file, but you'll also see tests running from -# Mu's standard library. -# -# Compare apps/factorial4.subx - -fn factorial n: int -> _/eax: int { - compare n, 1 - # if (n <= 1) return 1 - { - break-if-> - return 1 - } - # n > 1; return n * factorial(n-1) - var tmp/ecx: int <- copy n - tmp <- decrement - var result/eax: int <- factorial tmp - result <- multiply n - return result -} - -fn test-factorial { - var result/eax: int <- factorial 5 - check-ints-equal result, 0x78, "F - test-factorial" -} - -fn main args-on-stack: (addr array addr array byte) -> _/ebx: int { - var args/eax: (addr array addr array byte) <- copy args-on-stack - # len = length(args) - var len/ecx: int <- length args - # if (len <= 1) return factorial(5) - compare len, 1 - { - break-if-> - var exit-status/eax: int <- factorial 5 - return exit-status - } - # if (args[1] == "test") run-tests() - var tmp2/ecx: (addr addr array byte) <- index args, 1 - var tmp3/eax: boolean <- string-equal? *tmp2, "test" - compare tmp3, 0 - { - break-if-= - run-tests - # TODO: get at Num-test-failures somehow - } - return 0 -} |