about summary refs log tree commit diff stats
path: root/apps/parse-int.mu
diff options
context:
space:
mode:
Diffstat (limited to 'apps/parse-int.mu')
-rw-r--r--apps/parse-int.mu47
1 files changed, 0 insertions, 47 deletions
diff --git a/apps/parse-int.mu b/apps/parse-int.mu
deleted file mode 100644
index 5bef26ab..00000000
--- a/apps/parse-int.mu
+++ /dev/null
@@ -1,47 +0,0 @@
-# parse a decimal int at the commandline
-#
-# To run:
-#   $ ./translate_mu apps/parse-int.mu
-#   $ ./a.elf 123
-#   $ echo $?
-#   123
-
-fn main _args: (addr array addr array byte) -> _/ebx: int {
-  # if no args, print a message and exit
-  var args/esi: (addr array addr array byte) <- copy _args
-  var n/ecx: int <- length args
-  compare n, 1
-  {
-    break-if->
-    print-string 0/screen, "usage: parse-int <integer>\n"
-    return 1
-  }
-  # otherwise parse the first arg as an integer
-  var in/ecx: (addr addr array byte) <- index args, 1
-  var out/eax: int <- parse-int *in
-  return out
-}
-
-fn parse-int _in: (addr array byte) -> _/eax: int {
-  var in/esi: (addr array byte) <- copy _in
-  var len/edx: int <- length in
-  var i/ecx: int <- copy 0
-  var result/edi: int <- copy 0
-  {
-    compare i, len
-    break-if->=
-    # result *= 10
-    var ten/eax: int <- copy 0xa
-    result <- multiply ten
-    # c = in[i]
-    var tmp/ebx: (addr byte) <- index in, i
-    var c/eax: byte <- copy-byte *tmp
-    #
-    var g/eax: grapheme <- copy c
-    var digit/eax: int <- to-decimal-digit g
-    result <- add digit
-    i <- increment
-    loop
-  }
-  return result
-}