diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-04-15 22:30:43 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-04-15 22:30:43 -0600 |
commit | 3415badef847db518daa9b46c6274ac3fb89f56d (patch) | |
tree | b32c7d9408416dab208d7670fd51da47710efad8 /vaporize/tests/Factorial.vapor | |
parent | 4d8e11688a54ef6b2cf0ba85f7879b5d8dbeec48 (diff) |
HW3 Test runner script
Diffstat (limited to 'vaporize/tests/Factorial.vapor')
-rw-r--r-- | vaporize/tests/Factorial.vapor | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/vaporize/tests/Factorial.vapor b/vaporize/tests/Factorial.vapor new file mode 100644 index 0000000..28e1126 --- /dev/null +++ b/vaporize/tests/Factorial.vapor @@ -0,0 +1,30 @@ + +const vmt_Fac + :Fac.ComputeFac + + +func Main() + t.0 = HeapAllocZ(4) + [t.0] = :vmt_Fac + if t.0 goto :null1 + Error("null pointer") + null1: + t.1 = [t.0] + t.1 = [t.1+0] + t.2 = call t.1(t.0 10) + PrintIntS(t.2) + ret + +func Fac.ComputeFac(this num) + t.0 = LtS(num 1) + if0 t.0 goto :if1_else + num_aux = 1 + goto :if1_end + if1_else: + t.1 = [this] + t.1 = [t.1+0] + t.2 = Sub(num 1) + t.3 = call t.1(this t.2) + num_aux = MulS(num t.3) + if1_end: + ret num_aux |