summaryrefslogtreecommitdiff
path: root/vaporize/tests/Factorial.vaporm
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-04-14 02:36:20 -0600
committerbd-912 <bdunahu@colostate.edu>2024-04-14 02:36:20 -0600
commitbd59acec960bf9e2ad93f0d1caa11a65613ee168 (patch)
tree3ef38b63578eaaea2b8b8e929d00195e57ab8834 /vaporize/tests/Factorial.vaporm
parentee60d3f9a32f75c628961f40a9bf4f1bf387ac06 (diff)
Add HW4 Test Files
Diffstat (limited to 'vaporize/tests/Factorial.vaporm')
-rw-r--r--vaporize/tests/Factorial.vaporm40
1 files changed, 40 insertions, 0 deletions
diff --git a/vaporize/tests/Factorial.vaporm b/vaporize/tests/Factorial.vaporm
new file mode 100644
index 0000000..a7e981c
--- /dev/null
+++ b/vaporize/tests/Factorial.vaporm
@@ -0,0 +1,40 @@
+const vmt_Fac
+ :Fac.ComputeFac
+
+func Main [in 0, out 0, local 0]
+ $t0 = HeapAllocZ(4)
+ [$t0] = :vmt_Fac
+ if $t0 goto :null1
+ Error("null pointer")
+null1:
+ $t1 = [$t0]
+ $t1 = [$t1]
+ $a0 = $t0
+ $a1 = 10
+ call $t1
+ $t1 = $v0
+ PrintIntS($t1)
+ ret
+
+func Fac.ComputeFac [in 0, out 0, local 1]
+ local[0] = $s0
+ $t0 = $a0
+ $s0 = $a1
+ $t1 = LtS($s0 1)
+ if0 $t1 goto :if1_else
+ $t1 = 1
+ goto :if1_end
+if1_else:
+ $t2 = [$t0]
+ $t2 = [$t2]
+ $t3 = Sub($s0 1)
+ $a0 = $t0
+ $a1 = $t3
+ call $t2
+ $t3 = $v0
+ $t1 = MulS($s0 $t3)
+if1_end:
+ $v0 = $t1
+ $s0 = local[0]
+ ret
+