about summary refs log tree commit diff stats
path: root/apps/factorial.mu
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-10-14 12:00:19 -0700
committerKartik Agaram <vc@akkartik.com>2020-10-14 12:00:19 -0700
commit9635163bdc7f1d060b93896a7268f9bf9b1f39d2 (patch)
tree8ff7d98b03f4a99230494f33d7f47ef991d43fbb /apps/factorial.mu
parent48a056b6da03758bfb365c3a8bac7b849793f013 (diff)
downloadmu-9635163bdc7f1d060b93896a7268f9bf9b1f39d2.tar.gz
7029
Diffstat (limited to 'apps/factorial.mu')
-rw-r--r--apps/factorial.mu11
1 files changed, 7 insertions, 4 deletions
diff --git a/apps/factorial.mu b/apps/factorial.mu
index 7be73342..b477190d 100644
--- a/apps/factorial.mu
+++ b/apps/factorial.mu
@@ -15,10 +15,12 @@ fn factorial n: int -> result/eax: int {
   compare n 1
   {
     break-if->
+    # n <= 1; return 1
     result <- copy 1
   }
   {
     break-if-<=
+    # n > 1; return n * factorial(n-1)
     var tmp/ecx: int <- copy n
     tmp <- decrement
     result <- factorial tmp
@@ -31,12 +33,13 @@ fn test-factorial {
   check-ints-equal result 0x78 "F - test-factorial"
 }
 
-fn main args-on-stack: (addr array addr array byte) -> exit-status/ebx: int {
+fn main args-on-stack: (addr array (addr array byte)) -> exit-status/ebx: int {
   var args/eax: (addr array addr array byte) <- copy args-on-stack
-  var tmp/ecx: int <- length args
+  # len = length(args)
+  var len/ecx: int <- length args
   $main-body: {
-    # if (len(args) <= 1) factorial(5)
-    compare tmp, 1
+    # if (len <= 1) factorial(5)
+    compare len, 1
     {
       break-if->
       var tmp/eax: int <- factorial 5