about summary refs log tree commit diff stats
path: root/apps/factorial.mu
diff options
context:
space:
mode:
Diffstat (limited to 'apps/factorial.mu')
-rw-r--r--apps/factorial.mu60
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
-}