diff --git a/bin/Factorial.class b/bin/Factorial.class new file mode 100644 index 0000000..a2af7ca Binary files /dev/null and b/bin/Factorial.class differ diff --git a/src/Factorial.jas b/src/Factorial.jas new file mode 100644 index 0000000..5511b7d --- /dev/null +++ b/src/Factorial.jas @@ -0,0 +1,51 @@ +.class public Factorial +.super java/lang/Object + +.method public ()V + aload 0 + invokenonvirtual java/lang/Object/()V + return +.end method + +.method public static factorial(I)I ; calc `given`! + .limit locals 3 + .limit stack 5 + bipush 1 ; + istore 0 ; store the parameter `given` + bipush 1 ; we start calculating with `p`=1 + istore 1 ; store `p` + bipush 2 ; we start calculating with `j`=1 + istore 2 ; store `j` + loop: + ; p *= j + iload 1 ; load p + iload 2 ; load j + imul ; multiply p and j + istore 1 ; store p*j in p + + ; j++ + iload 2 ; load j + bipush 1 ; put a 1 on the stack + iadd ; add j and 1 + istore 2 ; store j+1 in j + + ; if j