diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-04-29 17:09:51 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-04-29 17:09:51 -0600 |
commit | ae4c925285a2f5d4d5c584168baafbabd0fe7971 (patch) | |
tree | 51cc017006eff54ef461667e2b88d3db5fe5d04c | |
parent | 3dfeff8e8e4c84929e35880bf0bbdea64c085fc0 (diff) |
Implement optimal spilling, fix minor issue with gaps in LRA
-rw-r--r-- | cfg/ControlFlowGraph.java | 1 | ||||
-rw-r--r-- | output/BinaryTree.vaporm | 1538 | ||||
-rw-r--r-- | output/BubbleSort.vaporm | 432 | ||||
-rw-r--r-- | output/LinearSearch.vaporm | 298 | ||||
-rw-r--r-- | output/LinkedList.vaporm | 934 | ||||
-rw-r--r-- | output/QuickSort.vaporm | 554 | ||||
-rw-r--r-- | output/TreeVisitor.vaporm | 1648 | ||||
-rw-r--r-- | output/ex37.vaporm | 20 | ||||
-rw-r--r-- | output/ex38.vaporm | 20 | ||||
-rw-r--r-- | output/ex41.vaporm | 56 | ||||
-rw-r--r-- | vaporize/RegisterAlloc.java | 10 |
11 files changed, 3673 insertions, 1838 deletions
diff --git a/cfg/ControlFlowGraph.java b/cfg/ControlFlowGraph.java index 49cd2fc..85d9fe9 100644 --- a/cfg/ControlFlowGraph.java +++ b/cfg/ControlFlowGraph.java @@ -100,6 +100,7 @@ public class ControlFlowGraph { public void addDefinition(CFGNode n, String s) { n.defs.add(s); n.reaching.add(s); + n.liveness.add(s); } public void addReference(CFGNode n, String s) { diff --git a/output/BinaryTree.vaporm b/output/BinaryTree.vaporm index d315ffb..135a5f5 100644 --- a/output/BinaryTree.vaporm +++ b/output/BinaryTree.vaporm @@ -96,8 +96,8 @@ func BT_Start [in 0, out 0, local 14] $s4 = $v0 $s6 = $s4 $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+72] + $s4 = [$s7+0] + $s5 = [$s4+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -105,21 +105,41 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 - $s6 = 100000000 - PrintIntS($s6 ) + $s4 = $v0 + $s6 = $s4 + $s4 = 100000000 + PrintIntS($s4 ) $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+48] - $s6 = 8 + $s4 = [$s7+0] + $s5 = [$s4+48] + $s4 = 8 + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s7 + $a1 = $s4 + call $s5 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s3 = $v0 + $s6 = $s3 + $s7 = $s7 + $s3 = [$s7+0] + $s4 = [$s3+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -127,7 +147,6 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 call $s4 $t3 = local[8] $t4 = local[9] @@ -135,11 +154,12 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s6 = $s5 + $s3 = $v0 + $s6 = $s3 $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+72] + $s3 = [$s7+0] + $s4 = [$s3+48] + $s3 = 24 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -147,7 +167,8 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s6 + $a1 = $s3 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -158,8 +179,8 @@ func BT_Start [in 0, out 0, local 14] $s6 = $s5 $s7 = $s7 $s5 = [$s7+0] - $s6 = [$s5+48] - $s5 = 24 + $s3 = [$s5+48] + $s5 = 4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -168,7 +189,7 @@ func BT_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s5 - call $s6 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -180,7 +201,7 @@ func BT_Start [in 0, out 0, local 14] $s7 = $s7 $s4 = [$s7+0] $s5 = [$s4+48] - $s4 = 4 + $s4 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -196,12 +217,12 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s3 = $v0 + $s6 = $s3 $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+48] - $s6 = 12 + $s3 = [$s7+0] + $s4 = [$s3+48] + $s3 = 20 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -209,7 +230,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -221,8 +242,8 @@ func BT_Start [in 0, out 0, local 14] $s6 = $s5 $s7 = $s7 $s5 = [$s7+0] - $s6 = [$s5+48] - $s5 = 20 + $s3 = [$s5+48] + $s5 = 28 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -231,7 +252,7 @@ func BT_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s5 - call $s6 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -243,7 +264,7 @@ func BT_Start [in 0, out 0, local 14] $s7 = $s7 $s4 = [$s7+0] $s5 = [$s4+48] - $s4 = 28 + $s4 = 14 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -259,12 +280,11 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s3 = $v0 + $s6 = $s3 $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+48] - $s6 = 14 + $s3 = [$s7+0] + $s4 = [$s3+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -272,7 +292,6 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 call $s4 $t3 = local[8] $t4 = local[9] @@ -280,11 +299,12 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s6 = $s5 + $s3 = $v0 + $s6 = $s3 $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+72] + $s3 = [$s7+0] + $s4 = [$s3+68] + $s3 = 24 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -292,7 +312,8 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s6 + $a1 = $s3 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -300,11 +321,12 @@ func BT_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s5 = $v0 - $s6 = $s5 + $s3 = $s5 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+68] - $s5 = 24 + $s3 = [$s7+0] + $s5 = [$s3+68] + $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -312,8 +334,8 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 - call $s6 + $a1 = $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -321,12 +343,12 @@ func BT_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = $s4 - PrintIntS($s5 ) + $s3 = $s4 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+68] - $s5 = 12 + $s3 = [$s7+0] + $s4 = [$s3+68] + $s3 = 16 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -334,7 +356,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -342,13 +364,13 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - PrintIntS($s5 ) + $s5 = $v0 + $s3 = $s5 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+68] - $s5 = 16 + $s3 = [$s7+0] + $s5 = [$s3+68] + $s3 = 50 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -356,8 +378,8 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 - call $s6 + $a1 = $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -365,12 +387,12 @@ func BT_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = $s4 - PrintIntS($s5 ) + $s3 = $s4 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+68] - $s5 = 50 + $s3 = [$s7+0] + $s4 = [$s3+68] + $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -378,7 +400,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -386,13 +408,13 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - PrintIntS($s5 ) + $s5 = $v0 + $s3 = $s5 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+68] - $s5 = 12 + $s3 = [$s7+0] + $s5 = [$s3+52] + $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -400,8 +422,8 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 - call $s6 + $a1 = $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -409,32 +431,10 @@ func BT_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = $s4 - PrintIntS($s5 ) - $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+52] - $s5 = 12 - local[8] = $t3 - local[9] = $t4 - local[10] = $t5 - local[11] = $t6 - local[12] = $t7 - local[13] = $t8 - $a0 = $s7 - $a1 = $s5 - call $s4 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s6 = $s4 $s7 = $s7 - $s6 = [$s7+0] - $s5 = [$s6+72] + $s4 = [$s7+0] + $s3 = [$s4+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -442,19 +442,19 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s5 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s4 = $v0 + $s6 = $s4 $s7 = $s7 - $s6 = [$s7+0] - $s5 = [$s6+68] - $s6 = 12 + $s4 = [$s7+0] + $s6 = [$s4+68] + $s4 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -462,19 +462,19 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 - call $s5 + $a1 = $s4 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s6 = $s4 - PrintIntS($s6 ) - $s6 = 0 - $v0 = $s6 + $s3 = $v0 + $s4 = $s3 + PrintIntS($s4 ) + $s4 = 0 + $v0 = $s4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -779,7 +779,7 @@ if100_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Insert [in 0, out 0, local 14] +func Tree_Insert [in 0, out 0, local 44] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -814,216 +814,352 @@ func Tree_Insert [in 0, out 0, local 14] $t8 = local[13] $s2 = $v0 $s5 = $s2 - $s5 = $s6 + $s2 = $s6 $s6 = 1 while115_test: - $s2 = $s6 - if0 $s2 goto :while115_end + $s3 = $s6 + if0 $s3 goto :while115_end while115_body: - $s5 = $s5 - $s2 = [$s5+0] - $s3 = [$s2+20] + $s2 = $s2 + $t0 = local[27] + $t0 = [$s2+0] + local[27] = $t0 + $t0 = local[33] + $t1 = local[27] + $t0 = [$t1+20] + local[27] = $t1 + local[33] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s3 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s2 = $v0 - $s3 = $s2 - $s2 = $s7 - $s1 = $s3 - $s3 = LtS($s2 $s1 ) - $s1 = $s3 - if0 $s1 goto :if120_else + $a0 = $s2 + $t0 = local[33] + $t1 = local[33] + call $t1 + local[33] = $t1 + local[33] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[29] + $t0 = $v0 + local[29] = $t0 + $t0 = local[37] + $t1 = local[29] + $t0 = $t1 + local[29] = $t1 + local[37] = $t0 + $t0 = local[24] + $t0 = $s7 + local[24] = $t0 + $t0 = local[23] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[23] = $t0 + $t0 = local[31] + $t1 = local[24] + $t2 = local[23] + $t0 = LtS($t1 $t2 ) + local[23] = $t2 + local[24] = $t1 + local[31] = $t0 + $t0 = local[25] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[25] = $t0 + $t0 = local[25] + if0 $t0 goto :if120_else + local[25] = $t0 if120_body: - $s5 = $s5 - $s1 = [$s5+0] - $s3 = [$s1+32] + $s2 = $s2 + $t0 = local[15] + $t0 = [$s2+0] + local[15] = $t0 + $t0 = local[21] + $t1 = local[15] + $t0 = [$t1+32] + local[15] = $t1 + local[21] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s3 + $a0 = $s2 + $t0 = local[21] + $t1 = local[21] + call $t1 + local[21] = $t1 + local[21] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s3 = $s1 - if0 $s3 goto :if124_else + $t0 = local[17] + $t0 = $v0 + local[17] = $t0 + $t0 = local[19] + $t1 = local[17] + $t0 = $t1 + local[17] = $t1 + local[19] = $t0 + $t0 = local[19] + if0 $t0 goto :if124_else + local[19] = $t0 if124_body: - $s5 = $s5 - $s3 = [$s5+0] - $s1 = [$s3+16] + $s2 = $s2 + $s1 = [$s2+0] + $t0 = local[42] + $t0 = [$s1+16] + local[42] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s1 + $a0 = $s2 + $t0 = local[42] + $t1 = local[42] + call $t1 + local[42] = $t1 + local[42] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 + $t7 = $v0 + $s2 = $t7 goto :if124_end if124_else: $s6 = 0 - $s5 = $s5 - $s3 = [$s5+0] - $s1 = [$s3+36] - $s3 = 1 + $s2 = $s2 + $t0 = local[41] + $t0 = [$s2+0] + local[41] = $t0 + $t0 = local[40] + $t1 = local[41] + $t0 = [$t1+36] + local[41] = $t1 + local[40] = $t0 + $t0 = local[26] + $t0 = 1 + local[26] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s3 - call $s1 + $a0 = $s2 + $t0 = local[26] + $a1 = $t0 + local[26] = $t0 + $t0 = local[40] + $t1 = local[40] + call $t1 + local[40] = $t1 + local[40] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - $s5 = $s5 - $s2 = [$s5+0] - $s3 = [$s2+8] - $s2 = $s4 + $t5 = $v0 + $s5 = $t5 + $s2 = $s2 + $t0 = local[35] + $t0 = [$s2+0] + local[35] = $t0 + $t0 = local[39] + $t1 = local[35] + $t0 = [$t1+8] + local[35] = $t1 + local[39] = $t0 + $t0 = local[38] + $t0 = $s4 + local[38] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 - call $s3 + $a0 = $s2 + $t0 = local[38] + $a1 = $t0 + local[38] = $t0 + $t0 = local[39] + $t1 = local[39] + call $t1 + local[39] = $t1 + local[39] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 + $t0 = local[36] + $t0 = $v0 + local[36] = $t0 + $t0 = local[36] + $s5 = $t0 + local[36] = $t0 if124_end: goto :if120_end if120_else: - $s5 = $s5 - $s1 = [$s5+0] - $s2 = [$s1+28] + $s2 = $s2 + $t0 = local[28] + $t0 = [$s2+0] + local[28] = $t0 + $t0 = local[34] + $t1 = local[28] + $t0 = [$t1+28] + local[28] = $t1 + local[34] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s2 + $a0 = $s2 + $t0 = local[34] + $t1 = local[34] + call $t1 + local[34] = $t1 + local[34] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s2 = $s1 - if0 $s2 goto :if139_else + $t0 = local[30] + $t0 = $v0 + local[30] = $t0 + $t0 = local[32] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[32] = $t0 + $t0 = local[32] + if0 $t0 goto :if139_else + local[32] = $t0 if139_body: - $s5 = $s5 - $s2 = [$s5+0] - $s1 = [$s2+12] + $s2 = $s2 + $t3 = [$s2+0] + $t4 = [$t3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s1 + $a0 = $s2 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 + $t3 = $v0 + $s2 = $t3 goto :if139_end if139_else: $s6 = 0 - $s5 = $s5 - $s2 = [$s5+0] - $s1 = [$s2+40] - $s2 = 1 + $s2 = $s2 + $t0 = local[16] + $t0 = [$s2+0] + local[16] = $t0 + $t0 = local[22] + $t1 = local[16] + $t0 = [$t1+40] + local[16] = $t1 + local[22] = $t0 + $t0 = local[20] + $t0 = 1 + local[20] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 - call $s1 + $a0 = $s2 + $t0 = local[20] + $a1 = $t0 + local[20] = $t0 + $t0 = local[22] + $t1 = local[22] + call $t1 + local[22] = $t1 + local[22] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s5 = $s5 - $s3 = [$s5+0] - $s2 = [$s3+4] - $s3 = $s4 + $t0 = local[18] + $t0 = $v0 + local[18] = $t0 + $t0 = local[18] + $s5 = $t0 + local[18] = $t0 + $s2 = $s2 + $s0 = [$s2+0] + $t0 = local[14] + $t0 = [$s0+4] + local[14] = $t0 + $t0 = local[43] + $t0 = $s4 + local[43] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s3 - call $s2 + $a0 = $s2 + $t0 = local[43] + $a1 = $t0 + local[43] = $t0 + $t0 = local[14] + $t1 = local[14] + call $t1 + local[14] = $t1 + local[14] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 + $t6 = $v0 + $s5 = $t6 if139_end: if120_end: goto :while115_test while115_end: - $s6 = 1 - $v0 = $s6 + $t5 = 1 + $v0 = $t5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1033,7 +1169,7 @@ while115_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Delete [in 0, out 0, local 14] +func Tree_Delete [in 0, out 0, local 54] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1047,15 +1183,23 @@ func Tree_Delete [in 0, out 0, local 14] $s5 = $s6 $s4 = $s6 $s3 = 1 - $s2 = 0 + $t0 = local[14] + $t0 = 0 + local[14] = $t0 $s1 = 1 while155_test: $s0 = $s3 if0 $s0 goto :while155_end while155_body: $s5 = $s5 - $s0 = [$s5+0] - $t7 = [$s0+20] + $t0 = local[45] + $t0 = [$s5+0] + local[45] = $t0 + $t0 = local[50] + $t1 = local[45] + $t0 = [$t1+20] + local[45] = $t1 + local[50] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1063,24 +1207,58 @@ while155_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t7 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s0 = $v0 - $t7 = $s0 - $s0 = $s7 - $t6 = $t7 - $t5 = LtS($s0 $t6 ) - $t6 = $t5 - if0 $t6 goto :if160_else + $t0 = local[50] + $t1 = local[50] + call $t1 + local[50] = $t1 + local[50] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[25] + $t0 = $v0 + local[25] = $t0 + $t0 = local[26] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[26] = $t0 + $t0 = local[41] + $t0 = $s7 + local[41] = $t0 + $t0 = local[40] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[40] = $t0 + $t0 = local[48] + $t1 = local[41] + $t2 = local[40] + $t0 = LtS($t1 $t2 ) + local[40] = $t2 + local[41] = $t1 + local[48] = $t0 + $t0 = local[44] + $t1 = local[48] + $t0 = $t1 + local[48] = $t1 + local[44] = $t0 + $t0 = local[44] + if0 $t0 goto :if160_else + local[44] = $t0 if160_body: $s5 = $s5 - $t6 = [$s5+0] - $t5 = [$t6+32] + $t0 = local[35] + $t0 = [$s5+0] + local[35] = $t0 + $t0 = local[34] + $t1 = local[35] + $t0 = [$t1+32] + local[35] = $t1 + local[34] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1088,21 +1266,39 @@ if160_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t5 + $t0 = local[34] + $t1 = local[34] + call $t1 + local[34] = $t1 + local[34] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t5 = $t6 - if0 $t5 goto :if164_else + $t0 = local[43] + $t0 = $v0 + local[43] = $t0 + $t0 = local[36] + $t1 = local[43] + $t0 = $t1 + local[43] = $t1 + local[36] = $t0 + $t0 = local[36] + if0 $t0 goto :if164_else + local[36] = $t0 if164_body: $s4 = $s5 $s5 = $s5 - $t5 = [$s5+0] - $t6 = [$t5+16] + $t0 = local[30] + $t0 = [$s5+0] + local[30] = $t0 + $t0 = local[33] + $t1 = local[30] + $t0 = [$t1+16] + local[30] = $t1 + local[33] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1110,30 +1306,56 @@ if164_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t6 + $t0 = local[33] + $t1 = local[33] + call $t1 + local[33] = $t1 + local[33] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s5 = $t5 + $t0 = local[31] + $t0 = $v0 + local[31] = $t0 + $t0 = local[31] + $s5 = $t0 + local[31] = $t0 goto :if164_end if164_else: $s3 = 0 if164_end: goto :if160_end if160_else: - $t5 = $t7 - $t7 = $s7 - $t6 = LtS($t5 $t7 ) - $t7 = $t6 - if0 $t7 goto :if171_else + $t0 = local[28] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[28] = $t0 + $t0 = local[27] + $t0 = $s7 + local[27] = $t0 + $t0 = local[32] + $t1 = local[28] + $t2 = local[27] + $t0 = LtS($t1 $t2 ) + local[27] = $t2 + local[28] = $t1 + local[32] = $t0 + $t0 = local[29] + $t1 = local[32] + $t0 = $t1 + local[32] = $t1 + local[29] = $t0 + $t0 = local[29] + if0 $t0 goto :if171_else + local[29] = $t0 if171_body: $s5 = $s5 - $t7 = [$s5+0] - $t6 = [$t7+28] + $s2 = [$s5+0] + $t3 = [$s2+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1141,21 +1363,21 @@ if171_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t6 + call $t3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 - $t6 = $t7 - if0 $t6 goto :if175_else + $s2 = $v0 + $t3 = $s2 + if0 $t3 goto :if175_else if175_body: $s4 = $s5 $s5 = $s5 - $t6 = [$s5+0] - $t7 = [$t6+12] + $t3 = [$s5+0] + $s2 = [$t3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1163,27 +1385,37 @@ if175_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t7 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $s5 = $t6 + $t3 = $v0 + $s5 = $t3 goto :if175_end if175_else: $s3 = 0 if175_end: goto :if171_end if171_else: - $t6 = $s1 - if0 $t6 goto :if182_else + $t0 = local[24] + $t0 = $s1 + local[24] = $t0 + $t0 = local[24] + if0 $t0 goto :if182_else + local[24] = $t0 if182_body: $s5 = $s5 - $t6 = [$s5+0] - $t7 = [$t6+28] + $t0 = local[22] + $t0 = [$s5+0] + local[22] = $t0 + $t0 = local[19] + $t1 = local[22] + $t0 = [$t1+28] + local[22] = $t1 + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1191,19 +1423,37 @@ if182_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t7 + $t0 = local[19] + $t1 = local[19] + call $t1 + local[19] = $t1 + local[19] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t7 = Eq($t6 0 ) - $t6 = $t7 + $t0 = local[23] + $t0 = $v0 + local[23] = $t0 + $t0 = local[20] + $t1 = local[23] + $t0 = Eq($t1 0 ) + local[23] = $t1 + local[20] = $t0 + $t0 = local[20] + $t6 = $t0 + local[20] = $t0 $s5 = $s5 - $t7 = [$s5+0] - $t5 = [$t7+32] + $t0 = local[15] + $t0 = [$s5+0] + local[15] = $t0 + $t0 = local[18] + $t1 = local[15] + $t0 = [$t1+32] + local[15] = $t1 + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1211,29 +1461,61 @@ if182_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t5 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $t7 = $v0 - $t5 = Eq($t7 0 ) - $t7 = $t5 - $t5 = Eq(1 $t6 ) - $t6 = Eq(1 $t7 ) - $t7 = Eq($t5 $t6 ) - $t6 = $t7 - if0 $t6 goto :if183_else + $t0 = local[18] + $t1 = local[18] + call $t1 + local[18] = $t1 + local[18] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[16] + $t0 = $v0 + local[16] = $t0 + $t0 = local[16] + $t7 = Eq($t0 0 ) + local[16] = $t0 + $t0 = local[17] + $t0 = $t7 + local[17] = $t0 + $t4 = Eq(1 $t6 ) + $t0 = local[17] + $t5 = Eq(1 $t0 ) + local[17] = $t0 + $t0 = local[21] + $t0 = Eq($t4 $t5 ) + local[21] = $t0 + $t0 = local[52] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[52] = $t0 + $t0 = local[52] + if0 $t0 goto :if183_else + local[52] = $t0 if183_body: - $t6 = 1 + $t0 = local[53] + $t0 = 1 + local[53] = $t0 goto :if183_end if183_else: - $t6 = [$s6+0] - $t7 = $s4 - $t5 = $s5 - $t6 = [$t6+56] + $t0 = local[39] + $t0 = [$s6+0] + local[39] = $t0 + $t0 = local[38] + $t0 = $s4 + local[38] = $t0 + $t0 = local[47] + $t0 = $s5 + local[47] = $t0 + $t0 = local[39] + $t1 = local[39] + $t0 = [$t1+56] + local[39] = $t1 + local[39] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1241,24 +1523,48 @@ if183_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $t7 - $a2 = $t5 - call $t6 + $t0 = local[38] + $a1 = $t0 + local[38] = $t0 + $t0 = local[47] + $a2 = $t0 + local[47] = $t0 + $t0 = local[39] + $t1 = local[39] + call $t1 + local[39] = $t1 + local[39] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $t6 = $s0 + $t0 = local[37] + $t0 = $v0 + local[37] = $t0 + $t0 = local[53] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[53] = $t0 if183_end: goto :if182_end if182_else: - $s0 = [$s6+0] - $t5 = $s4 - $t7 = $s5 - $s0 = [$s0+56] + $t0 = local[51] + $t0 = [$s6+0] + local[51] = $t0 + $t0 = local[49] + $t0 = $s4 + local[49] = $t0 + $t0 = local[42] + $t0 = $s5 + local[42] = $t0 + $t0 = local[51] + $t1 = local[51] + $t0 = [$t1+56] + local[51] = $t1 + local[51] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1266,27 +1572,45 @@ if182_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $t5 - $a2 = $t7 - call $s0 + $t0 = local[49] + $a1 = $t0 + local[49] = $t0 + $t0 = local[42] + $a2 = $t0 + local[42] = $t0 + $t0 = local[51] + $t1 = local[51] + call $t1 + local[51] = $t1 + local[51] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t6 = $t6 + $t0 = local[46] + $t0 = $v0 + local[46] = $t0 + $t0 = local[53] + $t1 = local[46] + $t0 = $t1 + local[46] = $t1 + local[53] = $t0 if182_end: - $s2 = 1 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 $s3 = 0 if171_end: if160_end: $s1 = 0 goto :while155_test while155_end: - $s1 = $s2 - $v0 = $s1 + $t0 = local[14] + $t4 = $t0 + local[14] = $t0 + $v0 = $t4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1354,8 +1678,8 @@ if206_body: goto :if206_end if206_else: $s7 = $s7 - $s2 = [$s7+0] - $s1 = [$s2+28] + $s1 = [$s7+0] + $s4 = [$s1+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1363,21 +1687,21 @@ if206_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s1 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s1 = $s2 - if0 $s1 goto :if214_else + $s1 = $v0 + $s4 = $s1 + if0 $s4 goto :if214_else if214_body: - $s1 = [$s5+0] - $s2 = $s6 - $s4 = $s7 - $s1 = [$s1+60] + $s4 = [$s5+0] + $s1 = $s6 + $s3 = $s7 + $s4 = [$s4+60] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1385,22 +1709,22 @@ if214_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s2 - $a2 = $s4 - call $s1 + $a1 = $s1 + $a2 = $s3 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 + $s0 = $v0 + $s2 = $s0 goto :if214_end if214_else: $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+20] + $s0 = [$s7+0] + $s3 = [$s0+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1408,18 +1732,18 @@ if214_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s4 = $s3 + $s0 = $v0 + $s3 = $s0 $s6 = $s6 - $s3 = [$s6+0] - $s7 = [$s3+16] + $s0 = [$s6+0] + $s7 = [$s0+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1434,10 +1758,10 @@ if214_else: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s7 = $s3 - $s3 = [$s7+0] - $s2 = [$s3+20] + $s0 = $v0 + $s7 = $s0 + $s0 = [$s7+0] + $s1 = [$s0+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1445,19 +1769,19 @@ if214_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = [$s5+0] - $s7 = $s4 - $s4 = $s2 - $s3 = [$s3+44] + $s0 = $v0 + $s1 = $s0 + $s0 = [$s5+0] + $s7 = $s3 + $s3 = $s1 + $s0 = [$s0+44] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1466,22 +1790,22 @@ if214_else: local[13] = $t8 $a0 = $s5 $a1 = $s7 - $a2 = $s4 - call $s3 + $a2 = $s3 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s4 = $s2 - if0 $s4 goto :if232_else + $s1 = $v0 + $s3 = $s1 + if0 $s3 goto :if232_else if232_body: $s6 = $s6 - $s4 = [$s6+0] - $s2 = [$s4+8] - $s4 = [$s5+100] + $s3 = [$s6+0] + $s1 = [$s3+8] + $s3 = [$s5+100] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1489,8 +1813,8 @@ if232_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s4 - call $s2 + $a1 = $s3 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1501,7 +1825,7 @@ if232_body: $s2 = $s7 $s6 = $s6 $s7 = [$s6+0] - $s4 = [$s7+36] + $s3 = [$s7+36] $s7 = 0 local[8] = $t3 local[9] = $t4 @@ -1511,21 +1835,21 @@ if232_body: local[13] = $t8 $a0 = $s6 $a1 = $s7 - call $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s2 = $s2 + $s1 = $v0 + $s2 = $s1 goto :if232_end if232_else: $s6 = $s6 - $s2 = [$s6+0] - $s7 = [$s2+4] - $s2 = [$s5+100] + $s1 = [$s6+0] + $s7 = [$s1+4] + $s1 = [$s5+100] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1533,7 +1857,7 @@ if232_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s2 + $a1 = $s1 call $s7 $t3 = local[8] $t4 = local[9] @@ -1545,7 +1869,7 @@ if232_else: $s2 = $s5 $s6 = $s6 $s5 = [$s6+0] - $s2 = [$s5+40] + $s1 = [$s5+40] $s5 = 0 local[8] = $t3 local[9] = $t4 @@ -1555,7 +1879,7 @@ if232_else: local[13] = $t8 $a0 = $s6 $a1 = $s5 - call $s2 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1578,7 +1902,7 @@ if206_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveRight [in 0, out 0, local 14] +func Tree_RemoveRight [in 0, out 0, local 23] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1587,13 +1911,15 @@ func Tree_RemoveRight [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 + local[15] = $a0 + local[14] = $a1 $s7 = $a2 while254_test: $s7 = $s7 - $s4 = [$s7+0] - $s3 = [$s4+28] + $s5 = [$s7+0] + $t0 = local[18] + $t0 = [$s5+28] + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1601,23 +1927,41 @@ while254_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + $t0 = local[18] + $t1 = local[18] + call $t1 + local[18] = $t1 + local[18] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - if0 $s3 goto :while254_end + $t0 = local[16] + $t0 = $v0 + local[16] = $t0 + $t0 = local[17] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[17] = $t0 + $t0 = local[17] + if0 $t0 goto :while254_end + local[17] = $t0 while254_body: $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+24] + $t0 = local[22] + $t0 = [$s7+0] + local[22] = $t0 + $t0 = local[21] + $t1 = local[22] + $t0 = [$t1+24] + local[22] = $t1 + local[21] = $t0 $s7 = $s7 - $s3 = [$s7+0] - $s2 = [$s3+12] + $t6 = [$s7+0] + $s3 = [$t6+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1625,33 +1969,33 @@ while254_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = [$s2+0] - $s1 = [$s3+20] + $t5 = $v0 + $s4 = $t5 + $s1 = [$s4+0] + $s2 = [$s1+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s2 - call $s1 + $a0 = $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 + $s0 = $v0 + $t3 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1659,20 +2003,32 @@ while254_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s1 - call $s4 + $a1 = $t3 + $t0 = local[21] + $t1 = local[21] + call $t1 + local[21] = $t1 + local[21] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 - $s6 = $s7 + $t0 = local[19] + $t0 = $v0 + local[19] = $t0 + $t0 = local[20] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[20] = $t0 + $t0 = local[14] + $t0 = $s7 + local[14] = $t0 $s7 = $s7 - $s1 = [$s7+0] - $s3 = [$s1+12] + $s6 = [$s7+0] + $t7 = [$s6+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1680,61 +2036,83 @@ while254_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s7 = $s1 + $t4 = $v0 + $s7 = $t4 goto :while254_test while254_end: - $s6 = $s6 - $s7 = [$s6+0] - $s1 = [$s7+4] - $s7 = [$s5+100] + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $s5 = [$t0+0] + local[14] = $t0 + $s6 = [$s5+4] + $t0 = local[15] + $s5 = [$t0+100] + local[15] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 - call $s1 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $s5 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s1 = $s5 - $s6 = $s6 - $s5 = [$s6+0] - $s7 = [$s5+40] - $s5 = 0 + $t3 = $v0 + $t0 = local[20] + $t0 = $t3 + local[20] = $t0 + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $t3 = [$t0+0] + local[14] = $t0 + $s5 = [$t3+40] + $t3 = 0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s5 - call $s7 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $t3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s1 = $s1 - $s1 = 1 - $v0 = $s1 + $s6 = $v0 + $t0 = local[20] + $t0 = $s6 + local[20] = $t0 + $s6 = 1 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1744,7 +2122,7 @@ while254_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveLeft [in 0, out 0, local 14] +func Tree_RemoveLeft [in 0, out 0, local 23] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1753,13 +2131,15 @@ func Tree_RemoveLeft [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 + local[15] = $a0 + local[14] = $a1 $s7 = $a2 while282_test: $s7 = $s7 - $s4 = [$s7+0] - $s3 = [$s4+32] + $s5 = [$s7+0] + $t0 = local[18] + $t0 = [$s5+32] + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1767,23 +2147,41 @@ while282_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + $t0 = local[18] + $t1 = local[18] + call $t1 + local[18] = $t1 + local[18] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - if0 $s3 goto :while282_end + $t0 = local[16] + $t0 = $v0 + local[16] = $t0 + $t0 = local[17] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[17] = $t0 + $t0 = local[17] + if0 $t0 goto :while282_end + local[17] = $t0 while282_body: $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+24] + $t0 = local[22] + $t0 = [$s7+0] + local[22] = $t0 + $t0 = local[21] + $t1 = local[22] + $t0 = [$t1+24] + local[22] = $t1 + local[21] = $t0 $s7 = $s7 - $s3 = [$s7+0] - $s2 = [$s3+16] + $t6 = [$s7+0] + $s3 = [$t6+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1791,33 +2189,33 @@ while282_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = [$s2+0] - $s1 = [$s3+20] + $t5 = $v0 + $s4 = $t5 + $s1 = [$s4+0] + $s2 = [$s1+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s2 - call $s1 + $a0 = $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 + $s0 = $v0 + $t3 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1825,20 +2223,32 @@ while282_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s1 - call $s4 + $a1 = $t3 + $t0 = local[21] + $t1 = local[21] + call $t1 + local[21] = $t1 + local[21] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 - $s6 = $s7 + $t0 = local[19] + $t0 = $v0 + local[19] = $t0 + $t0 = local[20] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[20] = $t0 + $t0 = local[14] + $t0 = $s7 + local[14] = $t0 $s7 = $s7 - $s1 = [$s7+0] - $s3 = [$s1+16] + $s6 = [$s7+0] + $t7 = [$s6+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1846,61 +2256,83 @@ while282_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s7 = $s1 + $t4 = $v0 + $s7 = $t4 goto :while282_test while282_end: - $s6 = $s6 - $s7 = [$s6+0] - $s1 = [$s7+8] - $s7 = [$s5+100] + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $s5 = [$t0+0] + local[14] = $t0 + $s6 = [$s5+8] + $t0 = local[15] + $s5 = [$t0+100] + local[15] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 - call $s1 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $s5 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s1 = $s5 - $s6 = $s6 - $s5 = [$s6+0] - $s7 = [$s5+36] - $s5 = 0 + $t3 = $v0 + $t0 = local[20] + $t0 = $t3 + local[20] = $t0 + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $t3 = [$t0+0] + local[14] = $t0 + $s5 = [$t3+36] + $t3 = 0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s5 - call $s7 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $t3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s1 = $s1 - $s1 = 1 - $v0 = $s1 + $s6 = $v0 + $t0 = local[20] + $t0 = $s6 + local[20] = $t0 + $s6 = 1 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1910,7 +2342,7 @@ while282_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Search [in 0, out 0, local 14] +func Tree_Search [in 0, out 0, local 27] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1923,14 +2355,22 @@ func Tree_Search [in 0, out 0, local 14] $s7 = $a1 $s5 = $s6 $s6 = 1 - $s4 = 0 + $t0 = local[14] + $t0 = 0 + local[14] = $t0 while310_test: $s3 = $s6 if0 $s3 goto :while310_end while310_body: $s5 = $s5 - $s3 = [$s5+0] - $s2 = [$s3+20] + $t0 = local[24] + $t0 = [$s5+0] + local[24] = $t0 + $t0 = local[23] + $t1 = local[24] + $t0 = [$t1+20] + local[24] = $t1 + local[23] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1938,24 +2378,58 @@ while310_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s2 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = $s7 - $s1 = $s2 - $s0 = LtS($s3 $s1 ) - $s1 = $s0 - if0 $s1 goto :if315_else + $t0 = local[23] + $t1 = local[23] + call $t1 + local[23] = $t1 + local[23] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[21] + $t0 = $v0 + local[21] = $t0 + $t0 = local[22] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[22] = $t0 + $t0 = local[20] + $t0 = $s7 + local[20] = $t0 + $t0 = local[19] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[19] = $t0 + $t0 = local[18] + $t1 = local[20] + $t2 = local[19] + $t0 = LtS($t1 $t2 ) + local[19] = $t2 + local[20] = $t1 + local[18] = $t0 + $t0 = local[15] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[15] = $t0 + $t0 = local[15] + if0 $t0 goto :if315_else + local[15] = $t0 if315_body: $s5 = $s5 - $s1 = [$s5+0] - $s0 = [$s1+32] + $t0 = local[17] + $t0 = [$s5+0] + local[17] = $t0 + $t0 = local[16] + $t1 = local[17] + $t0 = [$t1+32] + local[17] = $t1 + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1963,20 +2437,32 @@ if315_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s0 + $t0 = local[16] + $t1 = local[16] + call $t1 + local[16] = $t1 + local[16] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s0 = $s1 - if0 $s0 goto :if319_else + $t0 = local[25] + $t0 = $v0 + local[25] = $t0 + $t0 = local[25] + $t4 = $t0 + local[25] = $t0 + if0 $t4 goto :if319_else if319_body: $s5 = $s5 - $s0 = [$s5+0] - $s1 = [$s0+16] + $t0 = local[26] + $t0 = [$s5+0] + local[26] = $t0 + $t0 = local[26] + $s0 = [$t0+16] + local[26] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1984,30 +2470,32 @@ if319_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s1 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s5 = $s0 + $t5 = $v0 + $s5 = $t5 goto :if319_end if319_else: $s6 = 0 if319_end: goto :if315_end if315_else: - $s0 = $s2 - $s2 = $s7 - $s1 = LtS($s0 $s2 ) + $t0 = local[22] + $t6 = $t0 + local[22] = $t0 + $t7 = $s7 + $s1 = LtS($t6 $t7 ) $s2 = $s1 if0 $s2 goto :if326_else if326_body: $s5 = $s5 - $s2 = [$s5+0] - $s1 = [$s2+28] + $s4 = [$s5+0] + $t3 = [$s4+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2015,20 +2503,20 @@ if326_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s1 + call $t3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s1 = $s2 - if0 $s1 goto :if330_else + $s4 = $v0 + $t3 = $s4 + if0 $t3 goto :if330_else if330_body: $s5 = $s5 - $s1 = [$s5+0] - $s2 = [$s1+12] + $t3 = [$s5+0] + $s4 = [$t3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2036,29 +2524,33 @@ if330_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s2 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 + $t3 = $v0 + $s5 = $t3 goto :if330_end if330_else: $s6 = 0 if330_end: goto :if326_end if326_else: - $s4 = 1 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 $s6 = 0 if326_end: if315_end: goto :while310_test while310_end: - $s6 = $s4 - $v0 = $s6 + $t0 = local[14] + $t4 = $t0 + local[14] = $t0 + $v0 = $t4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -2185,8 +2677,8 @@ if342_else: $s3 = 1 if342_end: $s7 = $s7 - $s3 = [$s7+0] - $s5 = [$s3+20] + $s5 = [$s7+0] + $s4 = [$s5+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2194,19 +2686,19 @@ if342_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s5 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - PrintIntS($s5 ) + $s5 = $v0 + $s4 = $s5 + PrintIntS($s4 ) $s7 = $s7 - $s5 = [$s7+0] - $s3 = [$s5+28] + $s4 = [$s7+0] + $s5 = [$s4+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2214,21 +2706,21 @@ if342_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 - if0 $s3 goto :if356_else + $s4 = $v0 + $s5 = $s4 + if0 $s5 goto :if356_else if356_body: - $s3 = [$s6+0] + $s5 = [$s6+0] $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+12] + $s4 = [$s7+0] + $s2 = [$s4+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2236,16 +2728,16 @@ if356_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s4 = $s5 - $s3 = [$s3+76] + $s4 = $v0 + $s2 = $s4 + $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2253,22 +2745,22 @@ if356_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s4 - call $s3 + $a1 = $s2 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 + $s4 = $v0 + $s3 = $s4 goto :if356_end if356_else: $s3 = 1 if356_end: - $s5 = 1 - $v0 = $s5 + $s3 = 1 + $v0 = $s3 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/BubbleSort.vaporm b/output/BubbleSort.vaporm index 0e223d0..4163f39 100644 --- a/output/BubbleSort.vaporm +++ b/output/BubbleSort.vaporm @@ -76,8 +76,8 @@ func BBS_Start [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s4 = $s7 - $s4 = [$s6+0] - $s4 = [$s4+8] + $s7 = [$s6+0] + $s7 = [$s7+8] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -85,19 +85,19 @@ func BBS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s4 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s4 = $s7 - $s7 = 99999 - PrintIntS($s7 ) - $s7 = [$s6+0] - $s7 = [$s7+4] + $s5 = $v0 + $s4 = $s5 + $s5 = 99999 + PrintIntS($s5 ) + $s5 = [$s6+0] + $s5 = [$s5+4] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -105,17 +105,17 @@ func BBS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s7 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s4 = $s4 - $s4 = [$s6+0] - $s4 = [$s4+8] + $s7 = $v0 + $s4 = $s7 + $s7 = [$s6+0] + $s7 = [$s7+8] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -123,17 +123,17 @@ func BBS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s4 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s4 = $s7 - $s7 = 0 - $v0 = $s7 + $s5 = $v0 + $s4 = $s5 + $s5 = 0 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -143,7 +143,7 @@ func BBS_Start [in 0, out 0, local 14] $s6 = local[6] $s7 = local[7] ret -func BBS_Sort [in 0, out 0, local 14] +func BBS_Sort [in 0, out 0, local 54] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -152,98 +152,310 @@ func BBS_Sort [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s7 = $a0 - $s6 = [$s7+20] + local[31] = $a0 + $t0 = local[31] + $s6 = [$t0+20] + local[31] = $t0 $s5 = 1 $s4 = Sub($s6 $s5 ) - $s5 = $s4 + $t0 = local[30] + $t0 = $s4 + local[30] = $t0 $s4 = 0 $s6 = 1 $s3 = Sub($s4 $s6 ) - $s6 = $s3 + $t0 = local[29] + $t0 = $s3 + local[29] = $t0 while23_test: - $s3 = $s6 - $s4 = $s5 - $s2 = LtS($s3 $s4 ) - $s4 = $s2 - if0 $s4 goto :while23_end + $t0 = local[28] + $t1 = local[29] + $t0 = $t1 + local[29] = $t1 + local[28] = $t0 + $t0 = local[22] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[22] = $t0 + $t0 = local[18] + $t1 = local[28] + $t2 = local[22] + $t0 = LtS($t1 $t2 ) + local[22] = $t2 + local[28] = $t1 + local[18] = $t0 + $t0 = local[14] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[14] = $t0 + $t0 = local[14] + if0 $t0 goto :while23_end + local[14] = $t0 while23_body: - $s4 = 1 + $t0 = local[20] + $t0 = 1 + local[20] = $t0 while28_test: - $s2 = $s4 - $s3 = $s5 - $s1 = 1 - $s0 = Add($s3 $s1 ) - $s1 = $s0 - $s0 = LtS($s2 $s1 ) - $s1 = $s0 - if0 $s1 goto :while28_end + $t0 = local[27] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[27] = $t0 + $t0 = local[24] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[24] = $t0 + $t0 = local[16] + $t0 = 1 + local[16] = $t0 + $t0 = local[23] + $t1 = local[24] + $t2 = local[16] + $t0 = Add($t1 $t2 ) + local[16] = $t2 + local[24] = $t1 + local[23] = $t0 + $t0 = local[15] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[15] = $t0 + $t0 = local[25] + $t1 = local[27] + $t2 = local[15] + $t0 = LtS($t1 $t2 ) + local[15] = $t2 + local[27] = $t1 + local[25] = $t0 + $t0 = local[17] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[17] = $t0 + $t0 = local[17] + if0 $t0 goto :while28_end + local[17] = $t0 while28_body: - $s1 = $s4 - $s0 = 1 - $s2 = Sub($s1 $s0 ) - $s0 = $s2 - $s2 = [$s7+16] - $s1 = MulS($s0 4 ) - $s1 = Add($s1 4 ) - $s1 = Add($s2 $s1 ) - $s2 = [$s1+0] - $s1 = $s2 - $s2 = [$s7+16] - $s0 = MulS($s4 4 ) - $s0 = Add($s0 4 ) - $s0 = Add($s2 $s0 ) - $s2 = [$s0+0] - $s0 = $s2 - $s2 = $s0 - $s0 = $s1 - $s1 = LtS($s2 $s0 ) - $s0 = $s1 - if0 $s0 goto :if45_else + $t0 = local[48] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[48] = $t0 + $t0 = local[47] + $t0 = 1 + local[47] = $t0 + $t0 = local[45] + $t1 = local[48] + $t2 = local[47] + $t0 = Sub($t1 $t2 ) + local[47] = $t2 + local[48] = $t1 + local[45] = $t0 + $t0 = local[46] + $t1 = local[45] + $t0 = $t1 + local[45] = $t1 + local[46] = $t0 + $t0 = local[44] + $t1 = local[31] + $t0 = [$t1+16] + local[31] = $t1 + local[44] = $t0 + $t0 = local[43] + $t1 = local[46] + $t0 = MulS($t1 4 ) + local[46] = $t1 + local[43] = $t0 + $t0 = local[43] + $t1 = local[43] + $t0 = Add($t1 4 ) + local[43] = $t1 + local[43] = $t0 + $t0 = local[43] + $t1 = local[44] + $t2 = local[43] + $t0 = Add($t1 $t2 ) + local[43] = $t2 + local[44] = $t1 + local[43] = $t0 + $t0 = local[41] + $t1 = local[43] + $t0 = [$t1+0] + local[43] = $t1 + local[41] = $t0 + $t0 = local[42] + $t1 = local[41] + $t0 = $t1 + local[41] = $t1 + local[42] = $t0 + $t0 = local[31] + $s5 = [$t0+16] + local[31] = $t0 + $t0 = local[36] + $t1 = local[20] + $t0 = MulS($t1 4 ) + local[20] = $t1 + local[36] = $t0 + $t0 = local[36] + $t1 = local[36] + $t0 = Add($t1 4 ) + local[36] = $t1 + local[36] = $t0 + $t0 = local[36] + $t1 = local[36] + $t0 = Add($s5 $t1 ) + local[36] = $t1 + local[36] = $t0 + $t0 = local[39] + $t1 = local[36] + $t0 = [$t1+0] + local[36] = $t1 + local[39] = $t0 + $t0 = local[40] + $t1 = local[39] + $t0 = $t1 + local[39] = $t1 + local[40] = $t0 + $t0 = local[38] + $t1 = local[40] + $t0 = $t1 + local[40] = $t1 + local[38] = $t0 + $t0 = local[37] + $t1 = local[42] + $t0 = $t1 + local[42] = $t1 + local[37] = $t0 + $t0 = local[35] + $t1 = local[38] + $t2 = local[37] + $t0 = LtS($t1 $t2 ) + local[37] = $t2 + local[38] = $t1 + local[35] = $t0 + $t0 = local[32] + $t1 = local[35] + $t0 = $t1 + local[35] = $t1 + local[32] = $t0 + $t0 = local[32] + if0 $t0 goto :if45_else + local[32] = $t0 if45_body: - $s0 = $s4 - $s1 = 1 - $s2 = Sub($s0 $s1 ) - $s1 = $s2 - $s2 = [$s7+16] - $s0 = MulS($s1 4 ) - $s0 = Add($s0 4 ) - $s0 = Add($s2 $s0 ) - $s2 = [$s0+0] - $s0 = $s2 - $s2 = [$s7+16] - $s3 = MulS($s1 4 ) - $s3 = Add($s3 4 ) - $s3 = Add($s2 $s3 ) - $s2 = [$s7+16] - $s1 = MulS($s4 4 ) + $t0 = local[33] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[33] = $t0 + $s6 = 1 + $t0 = local[34] + $t1 = local[33] + $t0 = Sub($t1 $s6 ) + local[33] = $t1 + local[34] = $t0 + $t0 = local[34] + $s7 = $t0 + local[34] = $t0 + $t0 = local[31] + $s2 = [$t0+16] + local[31] = $t0 + $s1 = MulS($s7 4 ) $s1 = Add($s1 4 ) $s1 = Add($s2 $s1 ) - $s2 = [$s1+0] - [$s3+0] = $s2 - $s2 = [$s7+16] - $s3 = MulS($s4 4 ) - $s3 = Add($s3 4 ) - $s3 = Add($s2 $s3 ) - [$s3+0] = $s0 + $t3 = [$s1+0] + $t4 = $t3 + $t0 = local[31] + $s3 = [$t0+16] + local[31] = $t0 + $s4 = MulS($s7 4 ) + $s4 = Add($s4 4 ) + $s4 = Add($s3 $s4 ) + $t0 = local[31] + $t5 = [$t0+16] + local[31] = $t0 + $t0 = local[20] + $s0 = MulS($t0 4 ) + local[20] = $t0 + $s0 = Add($s0 4 ) + $s0 = Add($t5 $s0 ) + $t6 = [$s0+0] + [$s4+0] = $t6 + $t0 = local[31] + $t7 = [$t0+16] + local[31] = $t0 + $t0 = local[49] + $t1 = local[20] + $t0 = MulS($t1 4 ) + local[20] = $t1 + local[49] = $t0 + $t0 = local[49] + $t1 = local[49] + $t0 = Add($t1 4 ) + local[49] = $t1 + local[49] = $t0 + $t0 = local[49] + $t1 = local[49] + $t0 = Add($t7 $t1 ) + local[49] = $t1 + local[49] = $t0 + $t0 = local[49] + [$t0+0] = $t4 + local[49] = $t0 goto :if45_end if45_else: - $s3 = 0 + $t0 = local[51] + $t0 = 0 + local[51] = $t0 if45_end: - $s3 = $s4 - $s0 = 1 - $s2 = Add($s3 $s0 ) - $s4 = $s2 + $t0 = local[53] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[53] = $t0 + $t0 = local[52] + $t0 = 1 + local[52] = $t0 + $t0 = local[50] + $t1 = local[53] + $t2 = local[52] + $t0 = Add($t1 $t2 ) + local[52] = $t2 + local[53] = $t1 + local[50] = $t0 + $t0 = local[20] + $t1 = local[50] + $t0 = $t1 + local[50] = $t1 + local[20] = $t0 goto :while28_test while28_end: - $s4 = $s5 - $s2 = 1 - $s0 = Sub($s4 $s2 ) - $s5 = $s0 + $t0 = local[21] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[21] = $t0 + $t0 = local[26] + $t0 = 1 + local[26] = $t0 + $t0 = local[19] + $t1 = local[21] + $t2 = local[26] + $t0 = Sub($t1 $t2 ) + local[26] = $t2 + local[21] = $t1 + local[19] = $t0 + $t0 = local[30] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[30] = $t0 goto :while23_test while23_end: - $s6 = 0 - $v0 = $s6 + $s7 = 0 + $v0 = $s7 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -266,26 +478,26 @@ func BBS_Print [in 0, out 0, local 14] $s7 = 0 while69_test: $s5 = $s7 - $s4 = [$s6+20] - $s3 = LtS($s5 $s4 ) - $s4 = $s3 - if0 $s4 goto :while69_end + $s1 = [$s6+20] + $s2 = LtS($s5 $s1 ) + $t7 = $s2 + if0 $t7 goto :while69_end while69_body: - $s4 = [$s6+16] - $s3 = MulS($s7 4 ) - $s3 = Add($s3 4 ) - $s3 = Add($s4 $s3 ) - $s4 = [$s3+0] - $s3 = $s4 - PrintIntS($s3 ) - $s3 = $s7 - $s4 = 1 - $s5 = Add($s3 $s4 ) - $s7 = $s5 + $t5 = [$s6+16] + $t6 = MulS($s7 4 ) + $t6 = Add($t6 4 ) + $t6 = Add($t5 $t6 ) + $s0 = [$t6+0] + $t3 = $s0 + PrintIntS($t3 ) + $s4 = $s7 + $s3 = 1 + $t4 = Add($s4 $s3 ) + $s7 = $t4 goto :while69_test while69_end: - $s6 = 0 - $v0 = $s6 + $t3 = 0 + $v0 = $t3 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/LinearSearch.vaporm b/output/LinearSearch.vaporm index f1b48cf..244e073 100644 --- a/output/LinearSearch.vaporm +++ b/output/LinearSearch.vaporm @@ -204,26 +204,26 @@ func LS_Print [in 0, out 0, local 14] $s7 = 1 while29_test: $s5 = $s7 - $s4 = [$s6+20] - $s3 = LtS($s5 $s4 ) - $s4 = $s3 - if0 $s4 goto :while29_end + $s1 = [$s6+20] + $s2 = LtS($s5 $s1 ) + $t7 = $s2 + if0 $t7 goto :while29_end while29_body: - $s4 = [$s6+16] - $s3 = MulS($s7 4 ) - $s3 = Add($s3 4 ) - $s3 = Add($s4 $s3 ) - $s4 = [$s3+0] - $s3 = $s4 - PrintIntS($s3 ) - $s3 = $s7 - $s4 = 1 - $s5 = Add($s3 $s4 ) - $s7 = $s5 + $t5 = [$s6+16] + $t6 = MulS($s7 4 ) + $t6 = Add($t6 4 ) + $t6 = Add($t5 $t6 ) + $s0 = [$t6+0] + $t3 = $s0 + PrintIntS($t3 ) + $s4 = $s7 + $s3 = 1 + $t4 = Add($s4 $s3 ) + $s7 = $t4 goto :while29_test while29_end: - $s6 = 0 - $v0 = $s6 + $t3 = 0 + $v0 = $t3 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -233,7 +233,7 @@ while29_end: $s6 = local[6] $s7 = local[7] ret -func LS_Search [in 0, out 0, local 14] +func LS_Search [in 0, out 0, local 31] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -246,56 +246,136 @@ func LS_Search [in 0, out 0, local 14] $s6 = $a1 $s7 = 1 $s4 = 0 - $s4 = 0 + $t0 = local[14] + $t0 = 0 + local[14] = $t0 while42_test: - $s3 = $s7 - $s2 = [$s5+20] - $s1 = LtS($s3 $s2 ) - $s2 = $s1 - if0 $s2 goto :while42_end + $s2 = $s7 + $t0 = local[28] + $t0 = [$s5+20] + local[28] = $t0 + $t0 = local[26] + $t1 = local[28] + $t0 = LtS($s2 $t1 ) + local[28] = $t1 + local[26] = $t0 + $t0 = local[27] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[27] = $t0 + $t0 = local[27] + if0 $t0 goto :while42_end + local[27] = $t0 while42_body: - $s2 = [$s5+16] - $s1 = MulS($s7 4 ) - $s1 = Add($s1 4 ) - $s1 = Add($s2 $s1 ) - $s2 = [$s1+0] - $s1 = $s2 - $s2 = $s6 - $s3 = 1 - $s0 = Add($s2 $s3 ) - $s3 = $s0 - $s0 = $s1 - $s2 = $s6 - $t7 = LtS($s0 $s2 ) - $s2 = $t7 - if0 $s2 goto :if53_else + $t0 = local[22] + $t0 = [$s5+16] + local[22] = $t0 + $t0 = local[24] + $t0 = MulS($s7 4 ) + local[24] = $t0 + $t0 = local[24] + $t1 = local[24] + $t0 = Add($t1 4 ) + local[24] = $t1 + local[24] = $t0 + $t0 = local[24] + $t1 = local[22] + $t2 = local[24] + $t0 = Add($t1 $t2 ) + local[24] = $t2 + local[22] = $t1 + local[24] = $t0 + $t0 = local[29] + $t1 = local[24] + $t0 = [$t1+0] + local[24] = $t1 + local[29] = $t0 + $t0 = local[30] + $t1 = local[29] + $t0 = $t1 + local[29] = $t1 + local[30] = $t0 + $t0 = local[18] + $t0 = $s6 + local[18] = $t0 + $t0 = local[21] + $t0 = 1 + local[21] = $t0 + $t0 = local[19] + $t1 = local[18] + $t2 = local[21] + $t0 = Add($t1 $t2 ) + local[21] = $t2 + local[18] = $t1 + local[19] = $t0 + $t0 = local[23] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[23] = $t0 + $t0 = local[16] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[16] = $t0 + $t0 = local[15] + $t0 = $s6 + local[15] = $t0 + $t0 = local[20] + $t1 = local[16] + $t2 = local[15] + $t0 = LtS($t1 $t2 ) + local[15] = $t2 + local[16] = $t1 + local[20] = $t0 + $t0 = local[17] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[17] = $t0 + $t0 = local[17] + if0 $t0 goto :if53_else + local[17] = $t0 if53_body: - $s2 = 0 + $t4 = 0 goto :if53_end if53_else: - $s2 = $s1 - $s1 = $s3 - $s3 = LtS($s2 $s1 ) - $s1 = Eq($s3 0 ) - $s3 = $s1 - if0 $s3 goto :if57_else + $t0 = local[30] + $t3 = $t0 + local[30] = $t0 + $t0 = local[23] + $s0 = $t0 + local[23] = $t0 + $s3 = LtS($t3 $s0 ) + $t5 = Eq($s3 0 ) + $s1 = $t5 + if0 $s1 goto :if57_else if57_body: - $s2 = 0 + $t4 = 0 goto :if57_end if57_else: $s4 = 1 - $s4 = 1 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 $s7 = [$s5+20] if57_end: if53_end: - $s3 = $s7 - $s1 = 1 - $s2 = Add($s3 $s1 ) - $s7 = $s2 + $t7 = $s7 + $t0 = local[25] + $t0 = 1 + local[25] = $t0 + $t0 = local[25] + $t6 = Add($t7 $t0 ) + local[25] = $t0 + $s7 = $t6 goto :while42_test while42_end: - $s5 = $s4 - $v0 = $s5 + $t0 = local[14] + $s3 = $t0 + local[14] = $t0 + $v0 = $s3 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -305,7 +385,7 @@ while42_end: $s6 = local[6] $s7 = local[7] ret -func LS_Init [in 0, out 0, local 14] +func LS_Init [in 0, out 0, local 27] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -340,39 +420,91 @@ func LS_Init [in 0, out 0, local 14] $s4 = $s3 while70_test: $s3 = $s5 - $s7 = [$s6+20] - $s2 = LtS($s3 $s7 ) - $s7 = $s2 - if0 $s7 goto :while70_end + $t0 = local[26] + $t0 = [$s6+20] + local[26] = $t0 + $t0 = local[25] + $t1 = local[26] + $t0 = LtS($s3 $t1 ) + local[26] = $t1 + local[25] = $t0 + $t0 = local[20] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[20] = $t0 + $t0 = local[20] + if0 $t0 goto :while70_end + local[20] = $t0 while70_body: - $s7 = 2 - $s2 = $s5 - $s3 = MulS($s7 $s2 ) - $s2 = $s3 - $s3 = $s4 - $s7 = 3 - $s1 = Sub($s3 $s7 ) - $s7 = $s1 - $s1 = [$s6+16] - $s3 = MulS($s5 4 ) - $s3 = Add($s3 4 ) - $s3 = Add($s1 $s3 ) - $s1 = $s2 - $s2 = $s7 - $s7 = Add($s1 $s2 ) - [$s3+0] = $s7 + $t0 = local[17] + $t0 = 2 + local[17] = $t0 + $t0 = local[16] + $t0 = $s5 + local[16] = $t0 + $t0 = local[21] + $t1 = local[17] + $t2 = local[16] + $t0 = MulS($t1 $t2 ) + local[16] = $t2 + local[17] = $t1 + local[21] = $t0 + $t0 = local[22] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[22] = $t0 + $t0 = local[14] + $t0 = $s4 + local[14] = $t0 + $t3 = 3 + $t0 = local[18] + $t1 = local[14] + $t0 = Sub($t1 $t3 ) + local[14] = $t1 + local[18] = $t0 + $t0 = local[19] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[19] = $t0 + $t0 = local[15] + $t0 = [$s6+16] + local[15] = $t0 + $t6 = MulS($s5 4 ) + $t6 = Add($t6 4 ) + $t0 = local[15] + $t6 = Add($t0 $t6 ) + local[15] = $t0 + $t0 = local[22] + $t4 = $t0 + local[22] = $t0 + $t0 = local[19] + $t5 = $t0 + local[19] = $t0 + $t7 = Add($t4 $t5 ) + [$t6+0] = $t7 $s7 = $s5 - $s3 = 1 - $s2 = Add($s7 $s3 ) + $s0 = 1 + $s2 = Add($s7 $s0 ) $s5 = $s2 - $s2 = $s4 - $s3 = 1 - $s7 = Sub($s2 $s3 ) - $s4 = $s7 + $t0 = local[24] + $t0 = $s4 + local[24] = $t0 + $t0 = local[23] + $t0 = 1 + local[23] = $t0 + $t0 = local[24] + $t1 = local[23] + $s1 = Sub($t0 $t1 ) + local[23] = $t1 + local[24] = $t0 + $s4 = $s1 goto :while70_test while70_end: - $s4 = 0 - $v0 = $s4 + $t3 = 0 + $v0 = $t3 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/LinkedList.vaporm b/output/LinkedList.vaporm index 742fe43..7a65181 100644 --- a/output/LinkedList.vaporm +++ b/output/LinkedList.vaporm @@ -287,8 +287,8 @@ if28_end: goto :if27_end if27_else: $s6 = $s6 - $s4 = [$s6+0] - $s5 = [$s4+12] + $s5 = [$s6+0] + $s3 = [$s5+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -296,16 +296,16 @@ if27_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s5 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s5 = $s4 - if0 $s5 goto :if33_else + $s5 = $v0 + $s3 = $s5 + if0 $s3 goto :if33_else if33_body: $s7 = 0 goto :if33_end @@ -315,8 +315,8 @@ if33_end: if27_end: if21_end: if12_end: - $s5 = $s7 - $v0 = $s5 + $s4 = $s7 + $v0 = $s4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -499,7 +499,7 @@ func List_SetNext [in 0, out 0, local 14] $s6 = local[6] $s7 = local[7] ret -func List_Delete [in 0, out 0, local 14] +func List_Delete [in 0, out 0, local 57] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -510,7 +510,9 @@ func List_Delete [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 - $s5 = $s6 + $t0 = local[14] + $t0 = $s6 + local[14] = $t0 $s4 = 0 $s3 = 0 $s2 = 1 @@ -522,19 +524,55 @@ func List_Delete [in 0, out 0, local 14] $t7 = [$s6+40] while65_test: $s6 = Eq($s0 0 ) - $t6 = $s6 - $s6 = Eq($s4 0 ) - $t5 = $s6 - $s6 = Eq(1 $t6 ) - $t6 = Eq(1 $t5 ) - $t5 = Eq($s6 $t6 ) - $t6 = $t5 - if0 $t6 goto :while65_end + $t0 = local[52] + $t0 = $s6 + local[52] = $t0 + $t0 = local[50] + $t0 = Eq($s4 0 ) + local[50] = $t0 + $t0 = local[42] + $t1 = local[50] + $t0 = $t1 + local[50] = $t1 + local[42] = $t0 + $t0 = local[41] + $t1 = local[52] + $t0 = Eq(1 $t1 ) + local[52] = $t1 + local[41] = $t0 + $t0 = local[43] + $t1 = local[42] + $t0 = Eq(1 $t1 ) + local[42] = $t1 + local[43] = $t0 + $t0 = local[49] + $t1 = local[41] + $t2 = local[43] + $t0 = Eq($t1 $t2 ) + local[43] = $t2 + local[41] = $t1 + local[49] = $t0 + $t0 = local[38] + $t1 = local[49] + $t0 = $t1 + local[49] = $t1 + local[38] = $t0 + $t0 = local[38] + if0 $t0 goto :while65_end + local[38] = $t0 while65_body: $s7 = $s7 - $t6 = [$s7+0] - $t5 = [$t6+16] - $t6 = $t7 + $t0 = local[40] + $t0 = [$s7+0] + local[40] = $t0 + $t0 = local[39] + $t1 = local[40] + $t0 = [$t1+16] + local[40] = $t1 + local[39] = $t0 + $t0 = local[34] + $t0 = $t7 + local[34] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -542,28 +580,64 @@ while65_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $t6 - call $t5 + $t0 = local[34] + $a1 = $t0 + local[34] = $t0 + $t0 = local[39] + $t1 = local[39] + call $t1 + local[39] = $t1 + local[39] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $t6 = $s6 - if0 $t6 goto :if74_else + $t0 = local[37] + $t0 = $v0 + local[37] = $t0 + $t0 = local[33] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[33] = $t0 + $t0 = local[33] + if0 $t0 goto :if74_else + local[33] = $t0 if74_body: $s4 = 1 - $t6 = $s2 - $s6 = 0 - $t5 = LtS($t6 $s6 ) - $s6 = $t5 - if0 $s6 goto :if79_else + $t0 = local[35] + $t0 = $s2 + local[35] = $t0 + $t0 = local[31] + $t0 = 0 + local[31] = $t0 + $t0 = local[36] + $t1 = local[35] + $t2 = local[31] + $t0 = LtS($t1 $t2 ) + local[31] = $t2 + local[35] = $t1 + local[36] = $t0 + $t0 = local[30] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[30] = $t0 + $t0 = local[30] + if0 $t0 goto :if79_else + local[30] = $t0 if79_body: $s1 = $s1 - $s6 = [$s1+0] - $t5 = [$s6+32] + $t0 = local[27] + $t0 = [$s1+0] + local[27] = $t0 + $t0 = local[26] + $t1 = local[27] + $t0 = [$t1+32] + local[27] = $t1 + local[26] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -571,28 +645,64 @@ if79_body: local[12] = $t7 local[13] = $t8 $a0 = $s1 - call $t5 + $t0 = local[26] + $t1 = local[26] + call $t1 + local[26] = $t1 + local[26] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 + $t0 = local[21] + $t0 = $v0 + local[21] = $t0 + $t0 = local[14] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[14] = $t0 goto :if79_end if79_else: - $s6 = 0 - $t5 = 555 - $t6 = Sub($s6 $t5 ) - $t5 = $t6 - PrintIntS($t5 ) + $t0 = local[28] + $t0 = 0 + local[28] = $t0 + $t0 = local[23] + $t0 = 555 + local[23] = $t0 + $t0 = local[29] + $t1 = local[28] + $t2 = local[23] + $t0 = Sub($t1 $t2 ) + local[23] = $t2 + local[28] = $t1 + local[29] = $t0 + $t0 = local[22] + $t1 = local[29] + $t0 = $t1 + local[29] = $t1 + local[22] = $t0 + $t0 = local[22] + PrintIntS($t0 ) + local[22] = $t0 $s3 = $s3 - $t5 = [$s3+0] - $t6 = [$t5+12] + $t0 = local[20] + $t0 = [$s3+0] + local[20] = $t0 + $t0 = local[20] + $t5 = [$t0+12] + local[20] = $t0 $s1 = $s1 - $t5 = [$s1+0] - $s6 = [$t5+32] + $t0 = local[17] + $t0 = [$s1+0] + local[17] = $t0 + $t0 = local[16] + $t1 = local[17] + $t0 = [$t1+32] + local[17] = $t1 + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -600,15 +710,21 @@ if79_else: local[12] = $t7 local[13] = $t8 $a0 = $s1 - call $s6 + $t0 = local[16] + $t1 = local[16] + call $t1 + local[16] = $t1 + local[16] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s6 = $t5 + $t6 = $v0 + $t0 = local[19] + $t0 = $t6 + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -616,34 +732,64 @@ if79_else: local[12] = $t7 local[13] = $t8 $a0 = $s3 - $a1 = $s6 - call $t6 + $t0 = local[19] + $a1 = $t0 + local[19] = $t0 + call $t5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s6 = $t5 - $s6 = 0 - $t5 = 555 - $t6 = Sub($s6 $t5 ) - $t5 = $t6 - PrintIntS($t5 ) + $t0 = local[24] + $t0 = $v0 + local[24] = $t0 + $t0 = local[25] + $t1 = local[24] + $t0 = $t1 + local[24] = $t1 + local[25] = $t0 + $t3 = 0 + $t4 = 555 + $t0 = local[18] + $t0 = Sub($t3 $t4 ) + local[18] = $t0 + $t0 = local[15] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[15] = $t0 + $t0 = local[15] + PrintIntS($t0 ) + local[15] = $t0 if79_end: goto :if74_end if74_else: - $t5 = 0 + $s5 = 0 if74_end: - $t5 = Eq($s4 0 ) - $t6 = $t5 - if0 $t6 goto :if101_else + $t0 = local[44] + $t0 = Eq($s4 0 ) + local[44] = $t0 + $t0 = local[46] + $t1 = local[44] + $t0 = $t1 + local[44] = $t1 + local[46] = $t0 + $t0 = local[46] + if0 $t0 goto :if101_else + local[46] = $t0 if101_body: $s3 = $s1 $s1 = $s1 - $t6 = [$s1+0] - $t5 = [$t6+32] + $t0 = local[54] + $t0 = [$s1+0] + local[54] = $t0 + $t0 = local[53] + $t1 = local[54] + $t0 = [$t1+32] + local[54] = $t1 + local[53] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -651,18 +797,32 @@ if101_body: local[12] = $t7 local[13] = $t8 $a0 = $s1 - call $t5 + $t0 = local[53] + $t1 = local[53] + call $t1 + local[53] = $t1 + local[53] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $s1 = $t6 + $t0 = local[45] + $t0 = $v0 + local[45] = $t0 + $t0 = local[45] + $s1 = $t0 + local[45] = $t0 $s1 = $s1 - $t6 = [$s1+0] - $t5 = [$t6+24] + $t0 = local[55] + $t0 = [$s1+0] + local[55] = $t0 + $t0 = local[48] + $t1 = local[55] + $t0 = [$t1+24] + local[55] = $t1 + local[48] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -670,18 +830,32 @@ if101_body: local[12] = $t7 local[13] = $t8 $a0 = $s1 - call $t5 + $t0 = local[48] + $t1 = local[48] + call $t1 + local[48] = $t1 + local[48] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $s0 = $t6 + $t0 = local[56] + $t0 = $v0 + local[56] = $t0 + $t0 = local[56] + $s0 = $t0 + local[56] = $t0 $s1 = $s1 - $t6 = [$s1+0] - $t5 = [$t6+28] + $t0 = local[51] + $t0 = [$s1+0] + local[51] = $t0 + $t0 = local[32] + $t1 = local[51] + $t0 = [$t1+28] + local[51] = $t1 + local[32] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -689,24 +863,34 @@ if101_body: local[12] = $t7 local[13] = $t8 $a0 = $s1 - call $t5 + $t0 = local[32] + $t1 = local[32] + call $t1 + local[32] = $t1 + local[32] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t7 = $t6 + $t0 = local[47] + $t0 = $v0 + local[47] = $t0 + $t0 = local[47] + $t7 = $t0 + local[47] = $t0 $s2 = 1 goto :if101_end if101_else: - $t5 = 0 + $s5 = 0 if101_end: goto :while65_test while65_end: - $t7 = $s5 - $v0 = $t7 + $t0 = local[14] + $s5 = $t0 + local[14] = $t0 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -716,7 +900,7 @@ while65_end: $s6 = local[6] $s7 = local[7] ret -func List_Search [in 0, out 0, local 14] +func List_Search [in 0, out 0, local 23] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -727,19 +911,29 @@ func List_Search [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 - $s5 = 0 + $t0 = local[14] + $t0 = 0 + local[14] = $t0 $s4 = $s6 $s3 = [$s6+48] $s2 = [$s6+40] while113_test: $s6 = Eq($s3 0 ) - $s1 = $s6 - if0 $s1 goto :while113_end + $t0 = local[22] + $t0 = $s6 + local[22] = $t0 + $t0 = local[22] + if0 $t0 goto :while113_end + local[22] = $t0 while113_body: $s7 = $s7 - $s1 = [$s7+0] - $s6 = [$s1+16] - $s1 = $s2 + $t4 = [$s7+0] + $t0 = local[17] + $t0 = [$t4+16] + local[17] = $t0 + $t0 = local[15] + $t0 = $s2 + local[15] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -747,26 +941,40 @@ while113_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s1 - call $s6 + $t0 = local[15] + $a1 = $t0 + local[15] = $t0 + $t0 = local[17] + $t1 = local[17] + call $t1 + local[17] = $t1 + local[17] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s1 = $s0 - if0 $s1 goto :if116_else + $t0 = local[21] + $t0 = $v0 + local[21] = $t0 + $t0 = local[21] + $s0 = $t0 + local[21] = $t0 + if0 $s0 goto :if116_else if116_body: - $s5 = 1 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 goto :if116_end if116_else: $s1 = 0 if116_end: $s4 = $s4 - $s1 = [$s4+0] - $s0 = [$s1+32] + $t7 = [$s4+0] + $t0 = local[19] + $t0 = [$t7+32] + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -774,18 +982,26 @@ if116_end: local[12] = $t7 local[13] = $t8 $a0 = $s4 - call $s0 + $t0 = local[19] + $t1 = local[19] + call $t1 + local[19] = $t1 + local[19] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s4 = $s1 + $t6 = $v0 + $s4 = $t6 $s4 = $s4 - $s1 = [$s4+0] - $s0 = [$s1+24] + $t0 = local[20] + $t0 = [$s4+0] + local[20] = $t0 + $t0 = local[20] + $t3 = [$t0+24] + local[20] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -793,18 +1009,26 @@ if116_end: local[12] = $t7 local[13] = $t8 $a0 = $s4 - call $s0 + call $t3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s3 = $s1 + $t0 = local[18] + $t0 = $v0 + local[18] = $t0 + $t0 = local[18] + $s3 = $t0 + local[18] = $t0 $s4 = $s4 - $s1 = [$s4+0] - $s0 = [$s1+28] + $t0 = local[16] + $t0 = [$s4+0] + local[16] = $t0 + $t0 = local[16] + $s5 = [$t0+28] + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -812,19 +1036,21 @@ if116_end: local[12] = $t7 local[13] = $t8 $a0 = $s4 - call $s0 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s2 = $s1 + $t5 = $v0 + $s2 = $t5 goto :while113_test while113_end: - $s2 = $s5 - $v0 = $s2 + $t0 = local[14] + $s5 = $t0 + local[14] = $t0 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -897,7 +1123,7 @@ func List_GetNext [in 0, out 0, local 14] $s6 = local[6] $s7 = local[7] ret -func List_Print [in 0, out 0, local 14] +func List_Print [in 0, out 0, local 19] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -912,12 +1138,22 @@ func List_Print [in 0, out 0, local 14] $s4 = [$s7+40] while134_test: $s7 = Eq($s5 0 ) - $s3 = $s7 - if0 $s3 goto :while134_end + $t0 = local[16] + $t0 = $s7 + local[16] = $t0 + $t0 = local[16] + if0 $t0 goto :while134_end + local[16] = $t0 while134_body: $s4 = $s4 - $s3 = [$s4+0] - $s7 = [$s3+4] + $t0 = local[18] + $t0 = [$s4+0] + local[18] = $t0 + $t0 = local[17] + $t1 = local[18] + $t0 = [$t1+4] + local[18] = $t1 + local[17] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -925,19 +1161,27 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s4 - call $s7 + $t0 = local[17] + $t1 = local[17] + call $t1 + local[17] = $t1 + local[17] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s7 = $s3 - PrintIntS($s7 ) + $t0 = local[15] + $t0 = $v0 + local[15] = $t0 + $t0 = local[15] + $t7 = $t0 + local[15] = $t0 + PrintIntS($t7 ) $s6 = $s6 - $s7 = [$s6+0] - $s3 = [$s7+32] + $t6 = [$s6+0] + $s2 = [$t6+32] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -945,18 +1189,18 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s3 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s6 = $s7 + $t5 = $v0 + $s6 = $t5 $s6 = $s6 - $s7 = [$s6+0] - $s3 = [$s7+24] + $s0 = [$s6+0] + $s1 = [$s0+24] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -964,18 +1208,20 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s3 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s5 = $s7 + $s3 = $v0 + $s5 = $s3 $s6 = $s6 - $s7 = [$s6+0] - $s3 = [$s7+28] + $t4 = [$s6+0] + $t0 = local[14] + $t0 = [$t4+28] + local[14] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -983,19 +1229,23 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s3 + $t0 = local[14] + $t1 = local[14] + call $t1 + local[14] = $t1 + local[14] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s4 = $s7 + $t3 = $v0 + $s4 = $t3 goto :while134_test while134_end: - $s4 = 1 - $v0 = $s4 + $t3 = 1 + $v0 = $t3 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1037,18 +1287,18 @@ func LL_Start [in 0, out 0, local 14] $t8 = local[13] $s6 = $v0 $s5 = $s6 - $s5 = $s7 - $s5 = $s5 - $s7 = [$s5+0] - $s6 = [$s7+0] + $s6 = $s7 + $s6 = $s6 + $s7 = [$s6+0] + $s4 = [$s7+0] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s6 + $a0 = $s6 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1057,17 +1307,17 @@ func LL_Start [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - $s5 = $s5 - $s7 = [$s5+0] - $s6 = [$s7+36] + $s6 = $s6 + $s7 = [$s6+0] + $s4 = [$s7+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s6 + $a0 = $s6 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1078,82 +1328,82 @@ func LL_Start [in 0, out 0, local 14] $s5 = $s7 $s7 = HeapAllocZ(36 ) [$s7+0] = :functable_Element - $s6 = $s7 - $s6 = $s6 - $s7 = [$s6+0] - $s4 = [$s7+0] + $s4 = $s7 + $s4 = $s4 + $s7 = [$s4+0] + $s3 = [$s7+0] $s7 = 25 - $s3 = 37000 - $s2 = 0 + $s2 = 37000 + $s1 = 0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s4 $a1 = $s7 - $a2 = $s3 - $a3 = $s2 - call $s4 + $a2 = $s2 + $a3 = $s1 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 - $s5 = $s5 - $s1 = [$s5+0] - $s2 = [$s1+8] - $s1 = $s6 + $s0 = $v0 + $s5 = $s0 + $s6 = $s6 + $s0 = [$s6+0] + $s1 = [$s0+8] + $s0 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s1 - call $s2 + $a0 = $s6 + $a1 = $s0 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s5 = $s5 - $s3 = [$s5+0] - $s1 = [$s3+36] + $s2 = $v0 + $s6 = $s2 + $s6 = $s6 + $s2 = [$s6+0] + $s0 = [$s2+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s1 + $a0 = $s6 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s3 = 10000000 - PrintIntS($s3 ) - $s3 = HeapAllocZ(36 ) - [$s3+0] = :functable_Element - $s6 = $s3 - $s6 = $s6 - $s3 = [$s6+0] - $s1 = [$s3+0] - $s3 = 39 - $s2 = 42000 + $s2 = $v0 + $s5 = $s2 + $s2 = 10000000 + PrintIntS($s2 ) + $s2 = HeapAllocZ(36 ) + [$s2+0] = :functable_Element + $s4 = $s2 + $s4 = $s4 + $s2 = [$s4+0] + $s0 = [$s2+0] + $s2 = 39 + $s1 = 42000 $s7 = 1 local[8] = $t3 local[9] = $t4 @@ -1161,51 +1411,51 @@ func LL_Start [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s3 - $a2 = $s2 + $a0 = $s4 + $a1 = $s2 + $a2 = $s1 $a3 = $s7 - call $s1 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s5 = $s4 - $s4 = $s6 - $s5 = $s5 - $s7 = [$s5+0] - $s2 = [$s7+8] - $s7 = $s6 + $s3 = $v0 + $s5 = $s3 + $s3 = $s4 + $s6 = $s6 + $s7 = [$s6+0] + $s1 = [$s7+8] + $s7 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 + $a0 = $s6 $a1 = $s7 - call $s2 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s5 = $s5 - $s3 = [$s5+0] - $s7 = [$s3+36] + $s2 = $v0 + $s6 = $s2 + $s6 = $s6 + $s2 = [$s6+0] + $s7 = [$s2+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 + $a0 = $s6 call $s7 $t3 = local[8] $t4 = local[9] @@ -1213,29 +1463,29 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s3 = 10000000 - PrintIntS($s3 ) - $s3 = HeapAllocZ(36 ) - [$s3+0] = :functable_Element - $s6 = $s3 - $s6 = $s6 - $s3 = [$s6+0] - $s7 = [$s3+0] - $s3 = 22 - $s2 = 34000 - $s1 = 0 + $s2 = $v0 + $s5 = $s2 + $s2 = 10000000 + PrintIntS($s2 ) + $s2 = HeapAllocZ(36 ) + [$s2+0] = :functable_Element + $s4 = $s2 + $s4 = $s4 + $s2 = [$s4+0] + $s7 = [$s2+0] + $s2 = 22 + $s1 = 34000 + $s0 = 0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s3 - $a2 = $s2 - $a3 = $s1 + $a0 = $s4 + $a1 = $s2 + $a2 = $s1 + $a3 = $s0 call $s7 $t3 = local[8] $t4 = local[9] @@ -1243,56 +1493,56 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s5 = $s0 - $s5 = $s5 - $s0 = [$s5+0] - $s1 = [$s0+8] - $s0 = $s6 + $t7 = $v0 + $s5 = $t7 + $s6 = $s6 + $t7 = [$s6+0] + $s0 = [$t7+8] + $t7 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s0 - call $s1 + $a0 = $s6 + $a1 = $t7 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - $s5 = $s5 - $s2 = [$s5+0] - $s0 = [$s2+36] + $s1 = $v0 + $s6 = $s1 + $s6 = $s6 + $s1 = [$s6+0] + $t7 = [$s1+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s0 + $a0 = $s6 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - $s2 = HeapAllocZ(36 ) - [$s2+0] = :functable_Element - $s0 = $s2 - $s0 = $s0 - $s2 = [$s0+0] - $s1 = [$s2+0] - $s2 = 27 - $s3 = 34000 + $s1 = $v0 + $s5 = $s1 + $s1 = HeapAllocZ(36 ) + [$s1+0] = :functable_Element + $t7 = $s1 + $t7 = $t7 + $s1 = [$t7+0] + $s0 = [$s1+0] + $s1 = 27 + $s2 = 34000 $s7 = 0 local[8] = $t3 local[9] = $t4 @@ -1300,31 +1550,31 @@ func LL_Start [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s0 - $a1 = $s2 - $a2 = $s3 + $a0 = $t7 + $a1 = $s1 + $a2 = $s2 $a3 = $s7 - call $s1 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 - $s5 = $t7 - $s5 = $s5 - $t7 = [$s5+0] - $s7 = [$t7+20] - $t7 = $s4 + $t6 = $v0 + $s5 = $t6 + $s6 = $s6 + $t6 = [$s6+0] + $s7 = [$t6+20] + $t6 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $t7 + $a0 = $s6 + $a1 = $t6 call $s7 $t3 = local[8] $t4 = local[9] @@ -1332,41 +1582,41 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $t7 = $s3 - PrintIntS($t7 ) - $s5 = $s5 - $t7 = [$s5+0] - $s3 = [$t7+20] - $t7 = $s0 + $s2 = $v0 + $t6 = $s2 + PrintIntS($t6 ) + $s6 = $s6 + $t6 = [$s6+0] + $s2 = [$t6+20] + $t6 = $t7 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $t7 - call $s3 + $a0 = $s6 + $a1 = $t6 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $t7 = $s0 - PrintIntS($t7 ) - $t7 = 10000000 - PrintIntS($t7 ) - $t7 = HeapAllocZ(36 ) - [$t7+0] = :functable_Element - $s6 = $t7 - $s6 = $s6 - $t7 = [$s6+0] - $s0 = [$t7+0] - $t7 = 28 - $s3 = 35000 + $t7 = $v0 + $t6 = $t7 + PrintIntS($t6 ) + $t6 = 10000000 + PrintIntS($t6 ) + $t6 = HeapAllocZ(36 ) + [$t6+0] = :functable_Element + $s4 = $t6 + $s4 = $s4 + $t6 = [$s4+0] + $t7 = [$t6+0] + $t6 = 28 + $s2 = 35000 $s7 = 0 local[8] = $t3 local[9] = $t4 @@ -1374,31 +1624,31 @@ func LL_Start [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $t7 - $a2 = $s3 + $a0 = $s4 + $a1 = $t6 + $a2 = $s2 $a3 = $s7 - call $s0 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - $s5 = $s5 - $s2 = [$s5+0] - $s7 = [$s2+8] - $s2 = $s6 + $s1 = $v0 + $s5 = $s1 + $s6 = $s6 + $s1 = [$s6+0] + $s7 = [$s1+8] + $s1 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 + $a0 = $s6 + $a1 = $s1 call $s7 $t3 = local[8] $t4 = local[9] @@ -1406,115 +1656,115 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s5 = $s5 - $s3 = [$s5+0] - $s2 = [$s3+36] + $s2 = $v0 + $s6 = $s2 + $s6 = $s6 + $s2 = [$s6+0] + $s1 = [$s2+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s2 + $a0 = $s6 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s3 = 2220000 - PrintIntS($s3 ) - $s5 = $s5 - $s3 = [$s5+0] - $s2 = [$s3+16] - $s3 = $s4 + $s2 = $v0 + $s5 = $s2 + $s2 = 2220000 + PrintIntS($s2 ) + $s6 = $s6 + $s2 = [$s6+0] + $s1 = [$s2+16] + $s2 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s3 - call $s2 + $a0 = $s6 + $a1 = $s2 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s5 = $s4 - $s5 = $s5 - $s4 = [$s5+0] - $s3 = [$s4+36] + $s3 = $v0 + $s6 = $s3 + $s6 = $s6 + $s3 = [$s6+0] + $s2 = [$s3+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s3 + $a0 = $s6 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s5 = $s4 - $s4 = 33300000 - PrintIntS($s4 ) - $s5 = $s5 - $s4 = [$s5+0] - $s3 = [$s4+16] - $s4 = $s6 + $s3 = $v0 + $s5 = $s3 + $s3 = 33300000 + PrintIntS($s3 ) + $s6 = $s6 + $s3 = [$s6+0] + $s2 = [$s3+16] + $s3 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s4 - call $s3 + $a0 = $s6 + $a1 = $s3 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - $s5 = $s5 - $s6 = [$s5+0] - $s4 = [$s6+36] + $s4 = $v0 + $s6 = $s4 + $s6 = $s6 + $s4 = [$s6+0] + $s3 = [$s4+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s4 + $a0 = $s6 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - $s6 = 44440000 - PrintIntS($s6 ) - $s6 = 0 - $v0 = $s6 + $s4 = $v0 + $s5 = $s4 + $s4 = 44440000 + PrintIntS($s4 ) + $s4 = 0 + $v0 = $s4 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/QuickSort.vaporm b/output/QuickSort.vaporm index 4fe47c6..5c53340 100644 --- a/output/QuickSort.vaporm +++ b/output/QuickSort.vaporm @@ -120,10 +120,10 @@ func QS_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s4 = $s4 - $s4 = [$s6+0] - $s4 = [$s4+8] + $s2 = $v0 + $s4 = $s2 + $s2 = [$s6+0] + $s2 = [$s2+8] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -131,7 +131,7 @@ func QS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -151,7 +151,7 @@ func QS_Start [in 0, out 0, local 14] $s6 = local[6] $s7 = local[7] ret -func QS_Sort [in 0, out 0, local 14] +func QS_Sort [in 0, out 0, local 42] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -160,208 +160,440 @@ func QS_Sort [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 - $s7 = $a2 - $s4 = 0 - $s3 = $s6 - $s2 = $s7 + local[14] = $a0 + local[17] = $a1 + local[15] = $a2 + $t0 = local[18] + $t0 = 0 + local[18] = $t0 + $t0 = local[17] + $s3 = $t0 + local[17] = $t0 + $t0 = local[15] + $s2 = $t0 + local[15] = $t0 $s1 = LtS($s3 $s2 ) $s2 = $s1 if0 $s2 goto :if22_else if22_body: - $s2 = [$s5+16] - $s1 = MulS($s7 4 ) + $t0 = local[14] + $s2 = [$t0+16] + local[14] = $t0 + $t0 = local[15] + $s1 = MulS($t0 4 ) + local[15] = $t0 $s1 = Add($s1 4 ) $s1 = Add($s2 $s1 ) $s2 = [$s1+0] $s1 = $s2 - $s2 = $s6 + $t0 = local[17] + $s2 = $t0 + local[17] = $t0 $s3 = 1 $s0 = Sub($s2 $s3 ) - $s3 = $s0 - $s0 = $s7 - $s2 = 1 + $t0 = local[16] + $t0 = $s0 + local[16] = $t0 + $t0 = local[19] + $t1 = local[15] + $t0 = $t1 + local[15] = $t1 + local[19] = $t0 + $t0 = local[41] + $t0 = 1 + local[41] = $t0 while32_test: - $t7 = $s2 - if0 $t7 goto :while32_end + $t0 = local[40] + $t1 = local[41] + $t0 = $t1 + local[41] = $t1 + local[40] = $t0 + $t0 = local[40] + if0 $t0 goto :while32_end + local[40] = $t0 while32_body: - $t7 = 1 + $t0 = local[32] + $t0 = 1 + local[32] = $t0 while34_test: - $t6 = $t7 - if0 $t6 goto :while34_end + $t0 = local[31] + $t1 = local[32] + $t0 = $t1 + local[32] = $t1 + local[31] = $t0 + $t0 = local[31] + if0 $t0 goto :while34_end + local[31] = $t0 while34_body: - $t6 = $s3 - $t5 = 1 - $t4 = Add($t6 $t5 ) - $s3 = $t4 - $t4 = [$s5+16] - $t5 = MulS($s3 4 ) - $t5 = Add($t5 4 ) - $t5 = Add($t4 $t5 ) - $t4 = [$t5+0] - $t5 = $t4 - $t4 = $t5 - $t6 = $s1 - $t3 = LtS($t4 $t6 ) - $t6 = Eq($t3 0 ) - $t3 = $t6 - if0 $t3 goto :if42_else + $t0 = local[16] + $s7 = $t0 + local[16] = $t0 + $t4 = 1 + $s5 = Add($s7 $t4 ) + $t0 = local[16] + $t0 = $s5 + local[16] = $t0 + $t0 = local[14] + $s0 = [$t0+16] + local[14] = $t0 + $t0 = local[16] + $s3 = MulS($t0 4 ) + local[16] = $t0 + $s3 = Add($s3 4 ) + $s3 = Add($s0 $s3 ) + $s4 = [$s3+0] + $t3 = $s4 + $t7 = $t3 + $t5 = $s1 + $s2 = LtS($t7 $t5 ) + $s6 = Eq($s2 0 ) + $t6 = $s6 + if0 $t6 goto :if42_else if42_body: - $t7 = 0 + $t0 = local[32] + $t0 = 0 + local[32] = $t0 goto :if42_end if42_else: - $t7 = 1 + $t0 = local[32] + $t0 = 1 + local[32] = $t0 if42_end: goto :while34_test while34_end: - $t7 = 1 + $t0 = local[32] + $t0 = 1 + local[32] = $t0 while47_test: - $t3 = $t7 - if0 $t3 goto :while47_end + $t0 = local[26] + $t1 = local[32] + $t0 = $t1 + local[32] = $t1 + local[26] = $t0 + $t0 = local[26] + if0 $t0 goto :while47_end + local[26] = $t0 while47_body: - $t3 = $s0 - $t6 = 1 - $t4 = Sub($t3 $t6 ) - $s0 = $t4 - $t4 = [$s5+16] - $t6 = MulS($s0 4 ) - $t6 = Add($t6 4 ) - $t6 = Add($t4 $t6 ) - $t4 = [$t6+0] - $t5 = $t4 - $t4 = $s1 - $t6 = $t5 - $t5 = LtS($t4 $t6 ) - $t6 = Eq($t5 0 ) - $t5 = $t6 - if0 $t5 goto :if55_else + $t0 = local[19] + $s4 = $t0 + local[19] = $t0 + $s7 = 1 + $s0 = Sub($s4 $s7 ) + $t0 = local[19] + $t0 = $s0 + local[19] = $t0 + $t0 = local[14] + $s6 = [$t0+16] + local[14] = $t0 + $t0 = local[19] + $s3 = MulS($t0 4 ) + local[19] = $t0 + $s3 = Add($s3 4 ) + $s3 = Add($s6 $s3 ) + $s5 = [$s3+0] + $t3 = $s5 + $s2 = $s1 + $t5 = $t3 + $t7 = LtS($s2 $t5 ) + $t4 = Eq($t7 0 ) + $t6 = $t4 + if0 $t6 goto :if55_else if55_body: - $t7 = 0 + $t0 = local[32] + $t0 = 0 + local[32] = $t0 goto :if55_end if55_else: - $t7 = 1 + $t0 = local[32] + $t0 = 1 + local[32] = $t0 if55_end: goto :while47_test while47_end: - $t7 = [$s5+16] - $t5 = MulS($s3 4 ) - $t5 = Add($t5 4 ) - $t5 = Add($t7 $t5 ) - $t7 = [$t5+0] - $s4 = $t7 - $t7 = [$s5+16] - $t5 = MulS($s3 4 ) - $t5 = Add($t5 4 ) - $t5 = Add($t7 $t5 ) - $t7 = [$s5+16] - $t6 = MulS($s0 4 ) - $t6 = Add($t6 4 ) - $t6 = Add($t7 $t6 ) - $t7 = [$t6+0] - [$t5+0] = $t7 - $t7 = [$s5+16] - $t5 = MulS($s0 4 ) - $t5 = Add($t5 4 ) - $t5 = Add($t7 $t5 ) - [$t5+0] = $s4 - $t5 = $s0 - $t7 = $s3 - $t6 = 1 - $t4 = Add($t7 $t6 ) - $t6 = $t4 - $t4 = LtS($t5 $t6 ) - $t6 = $t4 - if0 $t6 goto :if70_else + $t0 = local[34] + $t1 = local[14] + $t0 = [$t1+16] + local[14] = $t1 + local[34] = $t0 + $t0 = local[37] + $t1 = local[16] + $t0 = MulS($t1 4 ) + local[16] = $t1 + local[37] = $t0 + $t0 = local[37] + $t1 = local[37] + $t0 = Add($t1 4 ) + local[37] = $t1 + local[37] = $t0 + $t0 = local[37] + $t1 = local[34] + $t2 = local[37] + $t0 = Add($t1 $t2 ) + local[37] = $t2 + local[34] = $t1 + local[37] = $t0 + $t0 = local[33] + $t1 = local[37] + $t0 = [$t1+0] + local[37] = $t1 + local[33] = $t0 + $t0 = local[18] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[18] = $t0 + $t0 = local[38] + $t1 = local[14] + $t0 = [$t1+16] + local[14] = $t1 + local[38] = $t0 + $t0 = local[35] + $t1 = local[16] + $t0 = MulS($t1 4 ) + local[16] = $t1 + local[35] = $t0 + $t0 = local[35] + $t1 = local[35] + $t0 = Add($t1 4 ) + local[35] = $t1 + local[35] = $t0 + $t0 = local[35] + $t1 = local[38] + $t2 = local[35] + $t0 = Add($t1 $t2 ) + local[35] = $t2 + local[38] = $t1 + local[35] = $t0 + $t0 = local[30] + $t1 = local[14] + $t0 = [$t1+16] + local[14] = $t1 + local[30] = $t0 + $t0 = local[21] + $t1 = local[19] + $t0 = MulS($t1 4 ) + local[19] = $t1 + local[21] = $t0 + $t0 = local[21] + $t1 = local[21] + $t0 = Add($t1 4 ) + local[21] = $t1 + local[21] = $t0 + $t0 = local[21] + $t1 = local[30] + $t2 = local[21] + $t0 = Add($t1 $t2 ) + local[21] = $t2 + local[30] = $t1 + local[21] = $t0 + $t0 = local[36] + $t1 = local[21] + $t0 = [$t1+0] + local[21] = $t1 + local[36] = $t0 + $t0 = local[35] + $t1 = local[36] + [$t0+0] = $t1 + local[36] = $t1 + local[35] = $t0 + $t0 = local[20] + $t1 = local[14] + $t0 = [$t1+16] + local[14] = $t1 + local[20] = $t0 + $t0 = local[27] + $t1 = local[19] + $t0 = MulS($t1 4 ) + local[19] = $t1 + local[27] = $t0 + $t0 = local[27] + $t1 = local[27] + $t0 = Add($t1 4 ) + local[27] = $t1 + local[27] = $t0 + $t0 = local[27] + $t1 = local[20] + $t2 = local[27] + $t0 = Add($t1 $t2 ) + local[27] = $t2 + local[20] = $t1 + local[27] = $t0 + $t0 = local[27] + $t1 = local[18] + [$t0+0] = $t1 + local[18] = $t1 + local[27] = $t0 + $t0 = local[29] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[29] = $t0 + $t0 = local[23] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[23] = $t0 + $t0 = local[22] + $t0 = 1 + local[22] = $t0 + $t0 = local[28] + $t1 = local[23] + $t2 = local[22] + $t0 = Add($t1 $t2 ) + local[22] = $t2 + local[23] = $t1 + local[28] = $t0 + $t0 = local[24] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 + local[24] = $t0 + $t0 = local[25] + $t1 = local[29] + $t2 = local[24] + $t0 = LtS($t1 $t2 ) + local[24] = $t2 + local[29] = $t1 + local[25] = $t0 + $t0 = local[39] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[39] = $t0 + $t0 = local[39] + if0 $t0 goto :if70_else + local[39] = $t0 if70_body: - $s2 = 0 + $t0 = local[41] + $t0 = 0 + local[41] = $t0 goto :if70_end if70_else: - $s2 = 1 + $t0 = local[41] + $t0 = 1 + local[41] = $t0 if70_end: goto :while32_test while32_end: - $s2 = [$s5+16] - $s1 = MulS($s0 4 ) - $s1 = Add($s1 4 ) - $s1 = Add($s2 $s1 ) - $s2 = [$s5+16] - $s0 = MulS($s3 4 ) + $t0 = local[14] + $s1 = [$t0+16] + local[14] = $t0 + $t0 = local[19] + $s0 = MulS($t0 4 ) + local[19] = $t0 $s0 = Add($s0 4 ) - $s0 = Add($s2 $s0 ) - $s2 = [$s0+0] - [$s1+0] = $s2 - $s2 = [$s5+16] - $s1 = MulS($s3 4 ) - $s1 = Add($s1 4 ) - $s1 = Add($s2 $s1 ) - $s2 = [$s5+16] - $s0 = MulS($s7 4 ) + $s0 = Add($s1 $s0 ) + $t0 = local[14] + $s1 = [$t0+16] + local[14] = $t0 + $t0 = local[16] + $s4 = MulS($t0 4 ) + local[16] = $t0 + $s4 = Add($s4 4 ) + $s4 = Add($s1 $s4 ) + $s1 = [$s4+0] + [$s0+0] = $s1 + $t0 = local[14] + $s1 = [$t0+16] + local[14] = $t0 + $t0 = local[16] + $s0 = MulS($t0 4 ) + local[16] = $t0 $s0 = Add($s0 4 ) - $s0 = Add($s2 $s0 ) - $s2 = [$s0+0] - [$s1+0] = $s2 - $s2 = [$s5+16] - $s1 = MulS($s7 4 ) - $s1 = Add($s1 4 ) - $s1 = Add($s2 $s1 ) - [$s1+0] = $s4 - $s1 = [$s5+0] - $s4 = $s3 - $s2 = 1 - $s0 = Sub($s4 $s2 ) - $s4 = $s6 - $s4 = $s0 - $s1 = [$s1+4] + $s0 = Add($s1 $s0 ) + $t0 = local[14] + $s1 = [$t0+16] + local[14] = $t0 + $t0 = local[15] + $s4 = MulS($t0 4 ) + local[15] = $t0 + $s4 = Add($s4 4 ) + $s4 = Add($s1 $s4 ) + $s1 = [$s4+0] + [$s0+0] = $s1 + $t0 = local[14] + $s1 = [$t0+16] + local[14] = $t0 + $t0 = local[15] + $s0 = MulS($t0 4 ) + local[15] = $t0 + $s0 = Add($s0 4 ) + $s0 = Add($s1 $s0 ) + $t0 = local[18] + [$s0+0] = $t0 + local[18] = $t0 + $t0 = local[14] + $s0 = [$t0+0] + local[14] = $t0 + $t0 = local[16] + $s1 = $t0 + local[16] = $t0 + $s4 = 1 + $s6 = Sub($s1 $s4 ) + $t0 = local[17] + $s1 = $t0 + local[17] = $t0 + $s1 = $s6 + $s0 = [$s0+4] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 - $a2 = $s4 - call $s1 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $s4 + $a2 = $s1 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s4 = $s0 - $s4 = [$s5+0] + $s6 = $v0 + $s1 = $s6 + $t0 = local[14] + $s6 = [$t0+0] + local[14] = $t0 + $t0 = local[16] + $s4 = $t0 + local[16] = $t0 + $s0 = 1 + $s3 = Add($s4 $s0 ) $s0 = $s3 - $s3 = 1 - $s2 = Add($s0 $s3 ) - $s3 = $s2 - $s2 = $s7 - $s4 = [$s4+4] + $t0 = local[15] + $s3 = $t0 + local[15] = $t0 + $s6 = [$s6+4] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s3 - $a2 = $s2 - call $s4 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $s0 + $a2 = $s3 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s4 = $s7 + $s4 = $v0 + $s1 = $s4 goto :if22_end if22_else: - $s4 = 0 + $s1 = 0 if22_end: - $s7 = 0 - $v0 = $s7 + $s1 = 0 + $v0 = $s1 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -384,26 +616,26 @@ func QS_Print [in 0, out 0, local 14] $s7 = 0 while104_test: $s5 = $s7 - $s4 = [$s6+20] - $s3 = LtS($s5 $s4 ) - $s4 = $s3 - if0 $s4 goto :while104_end + $s1 = [$s6+20] + $s2 = LtS($s5 $s1 ) + $t7 = $s2 + if0 $t7 goto :while104_end while104_body: - $s4 = [$s6+16] - $s3 = MulS($s7 4 ) - $s3 = Add($s3 4 ) - $s3 = Add($s4 $s3 ) - $s4 = [$s3+0] - $s3 = $s4 - PrintIntS($s3 ) - $s3 = $s7 - $s4 = 1 - $s5 = Add($s3 $s4 ) - $s7 = $s5 + $t5 = [$s6+16] + $t6 = MulS($s7 4 ) + $t6 = Add($t6 4 ) + $t6 = Add($t5 $t6 ) + $s0 = [$t6+0] + $t3 = $s0 + PrintIntS($t3 ) + $s4 = $s7 + $s3 = 1 + $t4 = Add($s4 $s3 ) + $s7 = $t4 goto :while104_test while104_end: - $s6 = 0 - $v0 = $s6 + $t3 = 0 + $v0 = $t3 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/TreeVisitor.vaporm b/output/TreeVisitor.vaporm index 51bb666..df4e39f 100644 --- a/output/TreeVisitor.vaporm +++ b/output/TreeVisitor.vaporm @@ -102,8 +102,8 @@ func TV_Start [in 0, out 0, local 14] $s4 = $v0 $s6 = $s4 $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+72] + $s4 = [$s7+0] + $s5 = [$s4+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -111,21 +111,21 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 - $s6 = 100000000 - PrintIntS($s6 ) + $s4 = $v0 + $s6 = $s4 + $s4 = 100000000 + PrintIntS($s4 ) $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+48] - $s6 = 8 + $s4 = [$s7+0] + $s5 = [$s4+48] + $s4 = 8 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -133,7 +133,28 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 + $a1 = $s4 + call $s5 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s3 = $v0 + $s6 = $s3 + $s7 = $s7 + $s3 = [$s7+0] + $s4 = [$s3+48] + $s3 = 24 + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s7 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -145,8 +166,8 @@ func TV_Start [in 0, out 0, local 14] $s6 = $s5 $s7 = $s7 $s5 = [$s7+0] - $s6 = [$s5+48] - $s5 = 24 + $s3 = [$s5+48] + $s5 = 4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -155,7 +176,7 @@ func TV_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s5 - call $s6 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -167,7 +188,7 @@ func TV_Start [in 0, out 0, local 14] $s7 = $s7 $s4 = [$s7+0] $s5 = [$s4+48] - $s4 = 4 + $s4 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -183,12 +204,12 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s3 = $v0 + $s6 = $s3 $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+48] - $s6 = 12 + $s3 = [$s7+0] + $s4 = [$s3+48] + $s3 = 20 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -196,7 +217,7 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -208,8 +229,8 @@ func TV_Start [in 0, out 0, local 14] $s6 = $s5 $s7 = $s7 $s5 = [$s7+0] - $s6 = [$s5+48] - $s5 = 20 + $s3 = [$s5+48] + $s5 = 28 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -218,7 +239,7 @@ func TV_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s5 - call $s6 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -230,7 +251,7 @@ func TV_Start [in 0, out 0, local 14] $s7 = $s7 $s4 = [$s7+0] $s5 = [$s4+48] - $s4 = 28 + $s4 = 14 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -246,12 +267,11 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s3 = $v0 + $s6 = $s3 $s7 = $s7 - $s6 = [$s7+0] - $s4 = [$s6+48] - $s6 = 14 + $s3 = [$s7+0] + $s4 = [$s3+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -259,7 +279,6 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 call $s4 $t3 = local[8] $t4 = local[9] @@ -267,11 +286,19 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s6 = $s5 + $s3 = $v0 + $s6 = $s3 + $s3 = 100000000 + PrintIntS($s3 ) + $s3 = HeapAllocZ(16 ) + [$s3+0] = :functable_MyVisitor + $s4 = $s3 + $s3 = 50000000 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+72] + $s3 = [$s7+0] + $s5 = [$s3+80] + $s3 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -279,26 +306,22 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s6 + $a1 = $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s6 = $s5 - $s5 = 100000000 - PrintIntS($s5 ) - $s5 = HeapAllocZ(16 ) - [$s5+0] = :functable_MyVisitor - $s6 = $s5 - $s5 = 50000000 - PrintIntS($s5 ) + $s4 = $v0 + $s3 = $s4 + $s3 = 100000000 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+80] - $s5 = $s6 + $s3 = [$s7+0] + $s4 = [$s3+68] + $s3 = 24 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -306,7 +329,7 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -314,14 +337,13 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - $s5 = 100000000 - PrintIntS($s5 ) + $s5 = $v0 + $s3 = $s5 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+68] - $s5 = 24 + $s3 = [$s7+0] + $s5 = [$s3+68] + $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -329,8 +351,8 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 - call $s6 + $a1 = $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -338,12 +360,12 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = $s4 - PrintIntS($s5 ) + $s3 = $s4 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+68] - $s5 = 12 + $s3 = [$s7+0] + $s4 = [$s3+68] + $s3 = 16 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -351,7 +373,7 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -359,13 +381,13 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - PrintIntS($s5 ) + $s5 = $v0 + $s3 = $s5 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+68] - $s5 = 16 + $s3 = [$s7+0] + $s5 = [$s3+68] + $s3 = 50 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -373,8 +395,8 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 - call $s6 + $a1 = $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -382,12 +404,12 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = $s4 - PrintIntS($s5 ) + $s3 = $s4 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+68] - $s5 = 50 + $s3 = [$s7+0] + $s4 = [$s3+68] + $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -395,7 +417,7 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -403,13 +425,13 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - PrintIntS($s5 ) + $s5 = $v0 + $s3 = $s5 + PrintIntS($s3 ) $s7 = $s7 - $s5 = [$s7+0] - $s6 = [$s5+68] - $s5 = 12 + $s3 = [$s7+0] + $s5 = [$s3+52] + $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -417,8 +439,8 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 - call $s6 + $a1 = $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -426,32 +448,10 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = $s4 - PrintIntS($s5 ) - $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+52] - $s5 = 12 - local[8] = $t3 - local[9] = $t4 - local[10] = $t5 - local[11] = $t6 - local[12] = $t7 - local[13] = $t8 - $a0 = $s7 - $a1 = $s5 - call $s4 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s6 = $s4 $s7 = $s7 - $s6 = [$s7+0] - $s5 = [$s6+72] + $s4 = [$s7+0] + $s3 = [$s4+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -459,19 +459,19 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s5 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s6 = $s6 + $s4 = $v0 + $s6 = $s4 $s7 = $s7 - $s6 = [$s7+0] - $s5 = [$s6+68] - $s6 = 12 + $s4 = [$s7+0] + $s6 = [$s4+68] + $s4 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -479,19 +479,19 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s6 - call $s5 + $a1 = $s4 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s6 = $s4 - PrintIntS($s6 ) - $s6 = 0 - $v0 = $s6 + $s3 = $v0 + $s4 = $s3 + PrintIntS($s4 ) + $s4 = 0 + $v0 = $s4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -796,7 +796,7 @@ if105_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Insert [in 0, out 0, local 14] +func Tree_Insert [in 0, out 0, local 44] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -831,216 +831,352 @@ func Tree_Insert [in 0, out 0, local 14] $t8 = local[13] $s2 = $v0 $s5 = $s2 - $s5 = $s6 + $s2 = $s6 $s6 = 1 while120_test: - $s2 = $s6 - if0 $s2 goto :while120_end + $s3 = $s6 + if0 $s3 goto :while120_end while120_body: - $s5 = $s5 - $s2 = [$s5+0] - $s3 = [$s2+20] + $s2 = $s2 + $t0 = local[27] + $t0 = [$s2+0] + local[27] = $t0 + $t0 = local[33] + $t1 = local[27] + $t0 = [$t1+20] + local[27] = $t1 + local[33] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s3 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s2 = $v0 - $s3 = $s2 - $s2 = $s7 - $s1 = $s3 - $s3 = LtS($s2 $s1 ) - $s1 = $s3 - if0 $s1 goto :if125_else + $a0 = $s2 + $t0 = local[33] + $t1 = local[33] + call $t1 + local[33] = $t1 + local[33] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[29] + $t0 = $v0 + local[29] = $t0 + $t0 = local[37] + $t1 = local[29] + $t0 = $t1 + local[29] = $t1 + local[37] = $t0 + $t0 = local[24] + $t0 = $s7 + local[24] = $t0 + $t0 = local[23] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[23] = $t0 + $t0 = local[31] + $t1 = local[24] + $t2 = local[23] + $t0 = LtS($t1 $t2 ) + local[23] = $t2 + local[24] = $t1 + local[31] = $t0 + $t0 = local[25] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[25] = $t0 + $t0 = local[25] + if0 $t0 goto :if125_else + local[25] = $t0 if125_body: - $s5 = $s5 - $s1 = [$s5+0] - $s3 = [$s1+32] + $s2 = $s2 + $t0 = local[15] + $t0 = [$s2+0] + local[15] = $t0 + $t0 = local[21] + $t1 = local[15] + $t0 = [$t1+32] + local[15] = $t1 + local[21] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s3 + $a0 = $s2 + $t0 = local[21] + $t1 = local[21] + call $t1 + local[21] = $t1 + local[21] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s3 = $s1 - if0 $s3 goto :if129_else + $t0 = local[17] + $t0 = $v0 + local[17] = $t0 + $t0 = local[19] + $t1 = local[17] + $t0 = $t1 + local[17] = $t1 + local[19] = $t0 + $t0 = local[19] + if0 $t0 goto :if129_else + local[19] = $t0 if129_body: - $s5 = $s5 - $s3 = [$s5+0] - $s1 = [$s3+16] + $s2 = $s2 + $s1 = [$s2+0] + $t0 = local[42] + $t0 = [$s1+16] + local[42] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s1 + $a0 = $s2 + $t0 = local[42] + $t1 = local[42] + call $t1 + local[42] = $t1 + local[42] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 + $t7 = $v0 + $s2 = $t7 goto :if129_end if129_else: $s6 = 0 - $s5 = $s5 - $s3 = [$s5+0] - $s1 = [$s3+36] - $s3 = 1 + $s2 = $s2 + $t0 = local[41] + $t0 = [$s2+0] + local[41] = $t0 + $t0 = local[40] + $t1 = local[41] + $t0 = [$t1+36] + local[41] = $t1 + local[40] = $t0 + $t0 = local[26] + $t0 = 1 + local[26] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s3 - call $s1 + $a0 = $s2 + $t0 = local[26] + $a1 = $t0 + local[26] = $t0 + $t0 = local[40] + $t1 = local[40] + call $t1 + local[40] = $t1 + local[40] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - $s5 = $s5 - $s2 = [$s5+0] - $s3 = [$s2+8] - $s2 = $s4 + $t5 = $v0 + $s5 = $t5 + $s2 = $s2 + $t0 = local[35] + $t0 = [$s2+0] + local[35] = $t0 + $t0 = local[39] + $t1 = local[35] + $t0 = [$t1+8] + local[35] = $t1 + local[39] = $t0 + $t0 = local[38] + $t0 = $s4 + local[38] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 - call $s3 + $a0 = $s2 + $t0 = local[38] + $a1 = $t0 + local[38] = $t0 + $t0 = local[39] + $t1 = local[39] + call $t1 + local[39] = $t1 + local[39] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 + $t0 = local[36] + $t0 = $v0 + local[36] = $t0 + $t0 = local[36] + $s5 = $t0 + local[36] = $t0 if129_end: goto :if125_end if125_else: - $s5 = $s5 - $s1 = [$s5+0] - $s2 = [$s1+28] + $s2 = $s2 + $t0 = local[28] + $t0 = [$s2+0] + local[28] = $t0 + $t0 = local[34] + $t1 = local[28] + $t0 = [$t1+28] + local[28] = $t1 + local[34] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s2 + $a0 = $s2 + $t0 = local[34] + $t1 = local[34] + call $t1 + local[34] = $t1 + local[34] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s2 = $s1 - if0 $s2 goto :if144_else + $t0 = local[30] + $t0 = $v0 + local[30] = $t0 + $t0 = local[32] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[32] = $t0 + $t0 = local[32] + if0 $t0 goto :if144_else + local[32] = $t0 if144_body: - $s5 = $s5 - $s2 = [$s5+0] - $s1 = [$s2+12] + $s2 = $s2 + $t3 = [$s2+0] + $t4 = [$t3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - call $s1 + $a0 = $s2 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 + $t3 = $v0 + $s2 = $t3 goto :if144_end if144_else: $s6 = 0 - $s5 = $s5 - $s2 = [$s5+0] - $s1 = [$s2+40] - $s2 = 1 + $s2 = $s2 + $t0 = local[16] + $t0 = [$s2+0] + local[16] = $t0 + $t0 = local[22] + $t1 = local[16] + $t0 = [$t1+40] + local[16] = $t1 + local[22] = $t0 + $t0 = local[20] + $t0 = 1 + local[20] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 - call $s1 + $a0 = $s2 + $t0 = local[20] + $a1 = $t0 + local[20] = $t0 + $t0 = local[22] + $t1 = local[22] + call $t1 + local[22] = $t1 + local[22] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s5 = $s5 - $s3 = [$s5+0] - $s2 = [$s3+4] - $s3 = $s4 + $t0 = local[18] + $t0 = $v0 + local[18] = $t0 + $t0 = local[18] + $s5 = $t0 + local[18] = $t0 + $s2 = $s2 + $s0 = [$s2+0] + $t0 = local[14] + $t0 = [$s0+4] + local[14] = $t0 + $t0 = local[43] + $t0 = $s4 + local[43] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s3 - call $s2 + $a0 = $s2 + $t0 = local[43] + $a1 = $t0 + local[43] = $t0 + $t0 = local[14] + $t1 = local[14] + call $t1 + local[14] = $t1 + local[14] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 + $t6 = $v0 + $s5 = $t6 if144_end: if125_end: goto :while120_test while120_end: - $s6 = 1 - $v0 = $s6 + $t5 = 1 + $v0 = $t5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1050,7 +1186,7 @@ while120_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Delete [in 0, out 0, local 14] +func Tree_Delete [in 0, out 0, local 54] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1064,15 +1200,23 @@ func Tree_Delete [in 0, out 0, local 14] $s5 = $s6 $s4 = $s6 $s3 = 1 - $s2 = 0 + $t0 = local[14] + $t0 = 0 + local[14] = $t0 $s1 = 1 while160_test: $s0 = $s3 if0 $s0 goto :while160_end while160_body: $s5 = $s5 - $s0 = [$s5+0] - $t7 = [$s0+20] + $t0 = local[45] + $t0 = [$s5+0] + local[45] = $t0 + $t0 = local[50] + $t1 = local[45] + $t0 = [$t1+20] + local[45] = $t1 + local[50] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1080,24 +1224,58 @@ while160_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t7 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s0 = $v0 - $t7 = $s0 - $s0 = $s7 - $t6 = $t7 - $t5 = LtS($s0 $t6 ) - $t6 = $t5 - if0 $t6 goto :if165_else + $t0 = local[50] + $t1 = local[50] + call $t1 + local[50] = $t1 + local[50] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[25] + $t0 = $v0 + local[25] = $t0 + $t0 = local[26] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[26] = $t0 + $t0 = local[41] + $t0 = $s7 + local[41] = $t0 + $t0 = local[40] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[40] = $t0 + $t0 = local[48] + $t1 = local[41] + $t2 = local[40] + $t0 = LtS($t1 $t2 ) + local[40] = $t2 + local[41] = $t1 + local[48] = $t0 + $t0 = local[44] + $t1 = local[48] + $t0 = $t1 + local[48] = $t1 + local[44] = $t0 + $t0 = local[44] + if0 $t0 goto :if165_else + local[44] = $t0 if165_body: $s5 = $s5 - $t6 = [$s5+0] - $t5 = [$t6+32] + $t0 = local[35] + $t0 = [$s5+0] + local[35] = $t0 + $t0 = local[34] + $t1 = local[35] + $t0 = [$t1+32] + local[35] = $t1 + local[34] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1105,21 +1283,39 @@ if165_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t5 + $t0 = local[34] + $t1 = local[34] + call $t1 + local[34] = $t1 + local[34] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t5 = $t6 - if0 $t5 goto :if169_else + $t0 = local[43] + $t0 = $v0 + local[43] = $t0 + $t0 = local[36] + $t1 = local[43] + $t0 = $t1 + local[43] = $t1 + local[36] = $t0 + $t0 = local[36] + if0 $t0 goto :if169_else + local[36] = $t0 if169_body: $s4 = $s5 $s5 = $s5 - $t5 = [$s5+0] - $t6 = [$t5+16] + $t0 = local[30] + $t0 = [$s5+0] + local[30] = $t0 + $t0 = local[33] + $t1 = local[30] + $t0 = [$t1+16] + local[30] = $t1 + local[33] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1127,30 +1323,56 @@ if169_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t6 + $t0 = local[33] + $t1 = local[33] + call $t1 + local[33] = $t1 + local[33] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s5 = $t5 + $t0 = local[31] + $t0 = $v0 + local[31] = $t0 + $t0 = local[31] + $s5 = $t0 + local[31] = $t0 goto :if169_end if169_else: $s3 = 0 if169_end: goto :if165_end if165_else: - $t5 = $t7 - $t7 = $s7 - $t6 = LtS($t5 $t7 ) - $t7 = $t6 - if0 $t7 goto :if176_else + $t0 = local[28] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[28] = $t0 + $t0 = local[27] + $t0 = $s7 + local[27] = $t0 + $t0 = local[32] + $t1 = local[28] + $t2 = local[27] + $t0 = LtS($t1 $t2 ) + local[27] = $t2 + local[28] = $t1 + local[32] = $t0 + $t0 = local[29] + $t1 = local[32] + $t0 = $t1 + local[32] = $t1 + local[29] = $t0 + $t0 = local[29] + if0 $t0 goto :if176_else + local[29] = $t0 if176_body: $s5 = $s5 - $t7 = [$s5+0] - $t6 = [$t7+28] + $s2 = [$s5+0] + $t3 = [$s2+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1158,21 +1380,21 @@ if176_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t6 + call $t3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 - $t6 = $t7 - if0 $t6 goto :if180_else + $s2 = $v0 + $t3 = $s2 + if0 $t3 goto :if180_else if180_body: $s4 = $s5 $s5 = $s5 - $t6 = [$s5+0] - $t7 = [$t6+12] + $t3 = [$s5+0] + $s2 = [$t3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1180,27 +1402,37 @@ if180_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t7 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $s5 = $t6 + $t3 = $v0 + $s5 = $t3 goto :if180_end if180_else: $s3 = 0 if180_end: goto :if176_end if176_else: - $t6 = $s1 - if0 $t6 goto :if187_else + $t0 = local[24] + $t0 = $s1 + local[24] = $t0 + $t0 = local[24] + if0 $t0 goto :if187_else + local[24] = $t0 if187_body: $s5 = $s5 - $t6 = [$s5+0] - $t7 = [$t6+28] + $t0 = local[22] + $t0 = [$s5+0] + local[22] = $t0 + $t0 = local[19] + $t1 = local[22] + $t0 = [$t1+28] + local[22] = $t1 + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1208,19 +1440,37 @@ if187_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t7 + $t0 = local[19] + $t1 = local[19] + call $t1 + local[19] = $t1 + local[19] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t7 = Eq($t6 0 ) - $t6 = $t7 + $t0 = local[23] + $t0 = $v0 + local[23] = $t0 + $t0 = local[20] + $t1 = local[23] + $t0 = Eq($t1 0 ) + local[23] = $t1 + local[20] = $t0 + $t0 = local[20] + $t6 = $t0 + local[20] = $t0 $s5 = $s5 - $t7 = [$s5+0] - $t5 = [$t7+32] + $t0 = local[15] + $t0 = [$s5+0] + local[15] = $t0 + $t0 = local[18] + $t1 = local[15] + $t0 = [$t1+32] + local[15] = $t1 + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1228,29 +1478,61 @@ if187_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $t5 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $t7 = $v0 - $t5 = Eq($t7 0 ) - $t7 = $t5 - $t5 = Eq(1 $t6 ) - $t6 = Eq(1 $t7 ) - $t7 = Eq($t5 $t6 ) - $t6 = $t7 - if0 $t6 goto :if188_else + $t0 = local[18] + $t1 = local[18] + call $t1 + local[18] = $t1 + local[18] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[16] + $t0 = $v0 + local[16] = $t0 + $t0 = local[16] + $t7 = Eq($t0 0 ) + local[16] = $t0 + $t0 = local[17] + $t0 = $t7 + local[17] = $t0 + $t4 = Eq(1 $t6 ) + $t0 = local[17] + $t5 = Eq(1 $t0 ) + local[17] = $t0 + $t0 = local[21] + $t0 = Eq($t4 $t5 ) + local[21] = $t0 + $t0 = local[52] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[52] = $t0 + $t0 = local[52] + if0 $t0 goto :if188_else + local[52] = $t0 if188_body: - $t6 = 1 + $t0 = local[53] + $t0 = 1 + local[53] = $t0 goto :if188_end if188_else: - $t6 = [$s6+0] - $t7 = $s4 - $t5 = $s5 - $t6 = [$t6+56] + $t0 = local[39] + $t0 = [$s6+0] + local[39] = $t0 + $t0 = local[38] + $t0 = $s4 + local[38] = $t0 + $t0 = local[47] + $t0 = $s5 + local[47] = $t0 + $t0 = local[39] + $t1 = local[39] + $t0 = [$t1+56] + local[39] = $t1 + local[39] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1258,24 +1540,48 @@ if188_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $t7 - $a2 = $t5 - call $t6 + $t0 = local[38] + $a1 = $t0 + local[38] = $t0 + $t0 = local[47] + $a2 = $t0 + local[47] = $t0 + $t0 = local[39] + $t1 = local[39] + call $t1 + local[39] = $t1 + local[39] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $t6 = $s0 + $t0 = local[37] + $t0 = $v0 + local[37] = $t0 + $t0 = local[53] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[53] = $t0 if188_end: goto :if187_end if187_else: - $s0 = [$s6+0] - $t5 = $s4 - $t7 = $s5 - $s0 = [$s0+56] + $t0 = local[51] + $t0 = [$s6+0] + local[51] = $t0 + $t0 = local[49] + $t0 = $s4 + local[49] = $t0 + $t0 = local[42] + $t0 = $s5 + local[42] = $t0 + $t0 = local[51] + $t1 = local[51] + $t0 = [$t1+56] + local[51] = $t1 + local[51] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1283,27 +1589,45 @@ if187_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $t5 - $a2 = $t7 - call $s0 + $t0 = local[49] + $a1 = $t0 + local[49] = $t0 + $t0 = local[42] + $a2 = $t0 + local[42] = $t0 + $t0 = local[51] + $t1 = local[51] + call $t1 + local[51] = $t1 + local[51] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t6 = $t6 + $t0 = local[46] + $t0 = $v0 + local[46] = $t0 + $t0 = local[53] + $t1 = local[46] + $t0 = $t1 + local[46] = $t1 + local[53] = $t0 if187_end: - $s2 = 1 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 $s3 = 0 if176_end: if165_end: $s1 = 0 goto :while160_test while160_end: - $s1 = $s2 - $v0 = $s1 + $t0 = local[14] + $t4 = $t0 + local[14] = $t0 + $v0 = $t4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1371,8 +1695,8 @@ if211_body: goto :if211_end if211_else: $s7 = $s7 - $s2 = [$s7+0] - $s1 = [$s2+28] + $s1 = [$s7+0] + $s4 = [$s1+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1380,21 +1704,21 @@ if211_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s1 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s1 = $s2 - if0 $s1 goto :if219_else + $s1 = $v0 + $s4 = $s1 + if0 $s4 goto :if219_else if219_body: - $s1 = [$s5+0] - $s2 = $s6 - $s4 = $s7 - $s1 = [$s1+60] + $s4 = [$s5+0] + $s1 = $s6 + $s3 = $s7 + $s4 = [$s4+60] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1402,22 +1726,22 @@ if219_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s2 - $a2 = $s4 - call $s1 + $a1 = $s1 + $a2 = $s3 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 + $s0 = $v0 + $s2 = $s0 goto :if219_end if219_else: $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+20] + $s0 = [$s7+0] + $s3 = [$s0+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1425,18 +1749,18 @@ if219_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s4 = $s3 + $s0 = $v0 + $s3 = $s0 $s6 = $s6 - $s3 = [$s6+0] - $s7 = [$s3+16] + $s0 = [$s6+0] + $s7 = [$s0+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1451,10 +1775,10 @@ if219_else: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s7 = $s3 - $s3 = [$s7+0] - $s2 = [$s3+20] + $s0 = $v0 + $s7 = $s0 + $s0 = [$s7+0] + $s1 = [$s0+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1462,19 +1786,19 @@ if219_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = [$s5+0] - $s7 = $s4 - $s4 = $s2 - $s3 = [$s3+44] + $s0 = $v0 + $s1 = $s0 + $s0 = [$s5+0] + $s7 = $s3 + $s3 = $s1 + $s0 = [$s0+44] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1483,22 +1807,22 @@ if219_else: local[13] = $t8 $a0 = $s5 $a1 = $s7 - $a2 = $s4 - call $s3 + $a2 = $s3 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s4 = $s2 - if0 $s4 goto :if237_else + $s1 = $v0 + $s3 = $s1 + if0 $s3 goto :if237_else if237_body: $s6 = $s6 - $s4 = [$s6+0] - $s2 = [$s4+8] - $s4 = [$s5+104] + $s3 = [$s6+0] + $s1 = [$s3+8] + $s3 = [$s5+104] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1506,8 +1830,8 @@ if237_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s4 - call $s2 + $a1 = $s3 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1518,7 +1842,7 @@ if237_body: $s2 = $s7 $s6 = $s6 $s7 = [$s6+0] - $s4 = [$s7+36] + $s3 = [$s7+36] $s7 = 0 local[8] = $t3 local[9] = $t4 @@ -1528,21 +1852,21 @@ if237_body: local[13] = $t8 $a0 = $s6 $a1 = $s7 - call $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s2 = $s2 + $s1 = $v0 + $s2 = $s1 goto :if237_end if237_else: $s6 = $s6 - $s2 = [$s6+0] - $s7 = [$s2+4] - $s2 = [$s5+104] + $s1 = [$s6+0] + $s7 = [$s1+4] + $s1 = [$s5+104] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1550,7 +1874,7 @@ if237_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s2 + $a1 = $s1 call $s7 $t3 = local[8] $t4 = local[9] @@ -1562,7 +1886,7 @@ if237_else: $s2 = $s5 $s6 = $s6 $s5 = [$s6+0] - $s2 = [$s5+40] + $s1 = [$s5+40] $s5 = 0 local[8] = $t3 local[9] = $t4 @@ -1572,7 +1896,7 @@ if237_else: local[13] = $t8 $a0 = $s6 $a1 = $s5 - call $s2 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1595,7 +1919,7 @@ if211_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveRight [in 0, out 0, local 14] +func Tree_RemoveRight [in 0, out 0, local 23] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1604,13 +1928,15 @@ func Tree_RemoveRight [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 + local[15] = $a0 + local[14] = $a1 $s7 = $a2 while259_test: $s7 = $s7 - $s4 = [$s7+0] - $s3 = [$s4+28] + $s5 = [$s7+0] + $t0 = local[18] + $t0 = [$s5+28] + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1618,23 +1944,41 @@ while259_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + $t0 = local[18] + $t1 = local[18] + call $t1 + local[18] = $t1 + local[18] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - if0 $s3 goto :while259_end + $t0 = local[16] + $t0 = $v0 + local[16] = $t0 + $t0 = local[17] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[17] = $t0 + $t0 = local[17] + if0 $t0 goto :while259_end + local[17] = $t0 while259_body: $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+24] + $t0 = local[22] + $t0 = [$s7+0] + local[22] = $t0 + $t0 = local[21] + $t1 = local[22] + $t0 = [$t1+24] + local[22] = $t1 + local[21] = $t0 $s7 = $s7 - $s3 = [$s7+0] - $s2 = [$s3+12] + $t6 = [$s7+0] + $s3 = [$t6+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1642,33 +1986,33 @@ while259_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = [$s2+0] - $s1 = [$s3+20] + $t5 = $v0 + $s4 = $t5 + $s1 = [$s4+0] + $s2 = [$s1+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s2 - call $s1 + $a0 = $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 + $s0 = $v0 + $t3 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1676,20 +2020,32 @@ while259_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s1 - call $s4 + $a1 = $t3 + $t0 = local[21] + $t1 = local[21] + call $t1 + local[21] = $t1 + local[21] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 - $s6 = $s7 + $t0 = local[19] + $t0 = $v0 + local[19] = $t0 + $t0 = local[20] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[20] = $t0 + $t0 = local[14] + $t0 = $s7 + local[14] = $t0 $s7 = $s7 - $s1 = [$s7+0] - $s3 = [$s1+12] + $s6 = [$s7+0] + $t7 = [$s6+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1697,61 +2053,83 @@ while259_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s7 = $s1 + $t4 = $v0 + $s7 = $t4 goto :while259_test while259_end: - $s6 = $s6 - $s7 = [$s6+0] - $s1 = [$s7+4] - $s7 = [$s5+104] + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $s5 = [$t0+0] + local[14] = $t0 + $s6 = [$s5+4] + $t0 = local[15] + $s5 = [$t0+104] + local[15] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 - call $s1 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $s5 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s1 = $s5 - $s6 = $s6 - $s5 = [$s6+0] - $s7 = [$s5+40] - $s5 = 0 + $t3 = $v0 + $t0 = local[20] + $t0 = $t3 + local[20] = $t0 + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $t3 = [$t0+0] + local[14] = $t0 + $s5 = [$t3+40] + $t3 = 0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s5 - call $s7 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $t3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s1 = $s1 - $s1 = 1 - $v0 = $s1 + $s6 = $v0 + $t0 = local[20] + $t0 = $s6 + local[20] = $t0 + $s6 = 1 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1761,7 +2139,7 @@ while259_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveLeft [in 0, out 0, local 14] +func Tree_RemoveLeft [in 0, out 0, local 23] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1770,13 +2148,15 @@ func Tree_RemoveLeft [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 + local[15] = $a0 + local[14] = $a1 $s7 = $a2 while287_test: $s7 = $s7 - $s4 = [$s7+0] - $s3 = [$s4+32] + $s5 = [$s7+0] + $t0 = local[18] + $t0 = [$s5+32] + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1784,23 +2164,41 @@ while287_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + $t0 = local[18] + $t1 = local[18] + call $t1 + local[18] = $t1 + local[18] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - if0 $s3 goto :while287_end + $t0 = local[16] + $t0 = $v0 + local[16] = $t0 + $t0 = local[17] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[17] = $t0 + $t0 = local[17] + if0 $t0 goto :while287_end + local[17] = $t0 while287_body: $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+24] + $t0 = local[22] + $t0 = [$s7+0] + local[22] = $t0 + $t0 = local[21] + $t1 = local[22] + $t0 = [$t1+24] + local[22] = $t1 + local[21] = $t0 $s7 = $s7 - $s3 = [$s7+0] - $s2 = [$s3+16] + $t6 = [$s7+0] + $s3 = [$t6+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1808,33 +2206,33 @@ while287_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = [$s2+0] - $s1 = [$s3+20] + $t5 = $v0 + $s4 = $t5 + $s1 = [$s4+0] + $s2 = [$s1+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s2 - call $s1 + $a0 = $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 + $s0 = $v0 + $t3 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1842,20 +2240,32 @@ while287_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s1 - call $s4 + $a1 = $t3 + $t0 = local[21] + $t1 = local[21] + call $t1 + local[21] = $t1 + local[21] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s1 = $s3 - $s6 = $s7 + $t0 = local[19] + $t0 = $v0 + local[19] = $t0 + $t0 = local[20] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[20] = $t0 + $t0 = local[14] + $t0 = $s7 + local[14] = $t0 $s7 = $s7 - $s1 = [$s7+0] - $s3 = [$s1+16] + $s6 = [$s7+0] + $t7 = [$s6+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1863,61 +2273,83 @@ while287_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s7 = $s1 + $t4 = $v0 + $s7 = $t4 goto :while287_test while287_end: - $s6 = $s6 - $s7 = [$s6+0] - $s1 = [$s7+8] - $s7 = [$s5+104] + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $s5 = [$t0+0] + local[14] = $t0 + $s6 = [$s5+8] + $t0 = local[15] + $s5 = [$t0+104] + local[15] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 - call $s1 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $s5 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s1 = $s5 - $s6 = $s6 - $s5 = [$s6+0] - $s7 = [$s5+36] - $s5 = 0 + $t3 = $v0 + $t0 = local[20] + $t0 = $t3 + local[20] = $t0 + $t0 = local[14] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[14] = $t0 + $t0 = local[14] + $t3 = [$t0+0] + local[14] = $t0 + $s5 = [$t3+36] + $t3 = 0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s5 - call $s7 + $t0 = local[14] + $a0 = $t0 + local[14] = $t0 + $a1 = $t3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s1 = $s1 - $s1 = 1 - $v0 = $s1 + $s6 = $v0 + $t0 = local[20] + $t0 = $s6 + local[20] = $t0 + $s6 = 1 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1927,7 +2359,7 @@ while287_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Search [in 0, out 0, local 14] +func Tree_Search [in 0, out 0, local 27] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1940,14 +2372,22 @@ func Tree_Search [in 0, out 0, local 14] $s7 = $a1 $s5 = $s6 $s6 = 1 - $s4 = 0 + $t0 = local[14] + $t0 = 0 + local[14] = $t0 while315_test: $s3 = $s6 if0 $s3 goto :while315_end while315_body: $s5 = $s5 - $s3 = [$s5+0] - $s2 = [$s3+20] + $t0 = local[24] + $t0 = [$s5+0] + local[24] = $t0 + $t0 = local[23] + $t1 = local[24] + $t0 = [$t1+20] + local[24] = $t1 + local[23] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1955,24 +2395,58 @@ while315_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s2 - $t3 = local[8] - $t4 = local[9] - $t5 = local[10] - $t6 = local[11] - $t7 = local[12] - $t8 = local[13] - $s3 = $v0 - $s2 = $s3 - $s3 = $s7 - $s1 = $s2 - $s0 = LtS($s3 $s1 ) - $s1 = $s0 - if0 $s1 goto :if320_else + $t0 = local[23] + $t1 = local[23] + call $t1 + local[23] = $t1 + local[23] = $t0 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $t0 = local[21] + $t0 = $v0 + local[21] = $t0 + $t0 = local[22] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[22] = $t0 + $t0 = local[20] + $t0 = $s7 + local[20] = $t0 + $t0 = local[19] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[19] = $t0 + $t0 = local[18] + $t1 = local[20] + $t2 = local[19] + $t0 = LtS($t1 $t2 ) + local[19] = $t2 + local[20] = $t1 + local[18] = $t0 + $t0 = local[15] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[15] = $t0 + $t0 = local[15] + if0 $t0 goto :if320_else + local[15] = $t0 if320_body: $s5 = $s5 - $s1 = [$s5+0] - $s0 = [$s1+32] + $t0 = local[17] + $t0 = [$s5+0] + local[17] = $t0 + $t0 = local[16] + $t1 = local[17] + $t0 = [$t1+32] + local[17] = $t1 + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1980,20 +2454,32 @@ if320_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s0 + $t0 = local[16] + $t1 = local[16] + call $t1 + local[16] = $t1 + local[16] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s0 = $s1 - if0 $s0 goto :if324_else + $t0 = local[25] + $t0 = $v0 + local[25] = $t0 + $t0 = local[25] + $t4 = $t0 + local[25] = $t0 + if0 $t4 goto :if324_else if324_body: $s5 = $s5 - $s0 = [$s5+0] - $s1 = [$s0+16] + $t0 = local[26] + $t0 = [$s5+0] + local[26] = $t0 + $t0 = local[26] + $s0 = [$t0+16] + local[26] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2001,30 +2487,32 @@ if324_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s1 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s5 = $s0 + $t5 = $v0 + $s5 = $t5 goto :if324_end if324_else: $s6 = 0 if324_end: goto :if320_end if320_else: - $s0 = $s2 - $s2 = $s7 - $s1 = LtS($s0 $s2 ) + $t0 = local[22] + $t6 = $t0 + local[22] = $t0 + $t7 = $s7 + $s1 = LtS($t6 $t7 ) $s2 = $s1 if0 $s2 goto :if331_else if331_body: $s5 = $s5 - $s2 = [$s5+0] - $s1 = [$s2+28] + $s4 = [$s5+0] + $t3 = [$s4+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2032,20 +2520,20 @@ if331_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s1 + call $t3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s1 = $s2 - if0 $s1 goto :if335_else + $s4 = $v0 + $t3 = $s4 + if0 $t3 goto :if335_else if335_body: $s5 = $s5 - $s1 = [$s5+0] - $s2 = [$s1+12] + $t3 = [$s5+0] + $s4 = [$t3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2053,29 +2541,33 @@ if335_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s2 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 + $t3 = $v0 + $s5 = $t3 goto :if335_end if335_else: $s6 = 0 if335_end: goto :if331_end if331_else: - $s4 = 1 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 $s6 = 0 if331_end: if320_end: goto :while315_test while315_end: - $s6 = $s4 - $v0 = $s6 + $t0 = local[14] + $t4 = $t0 + local[14] = $t0 + $v0 = $t4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -2202,8 +2694,8 @@ if347_else: $s3 = 1 if347_end: $s7 = $s7 - $s3 = [$s7+0] - $s5 = [$s3+20] + $s5 = [$s7+0] + $s4 = [$s5+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2211,19 +2703,19 @@ if347_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s5 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - PrintIntS($s5 ) + $s5 = $v0 + $s4 = $s5 + PrintIntS($s4 ) $s7 = $s7 - $s5 = [$s7+0] - $s3 = [$s5+28] + $s4 = [$s7+0] + $s5 = [$s4+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2231,21 +2723,21 @@ if347_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 - if0 $s3 goto :if361_else + $s4 = $v0 + $s5 = $s4 + if0 $s5 goto :if361_else if361_body: - $s3 = [$s6+0] + $s5 = [$s6+0] $s7 = $s7 - $s5 = [$s7+0] - $s4 = [$s5+12] + $s4 = [$s7+0] + $s2 = [$s4+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2253,16 +2745,16 @@ if361_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s4 = $s5 - $s3 = [$s3+76] + $s4 = $v0 + $s2 = $s4 + $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2270,22 +2762,22 @@ if361_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s4 - call $s3 + $a1 = $s2 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 + $s4 = $v0 + $s3 = $s4 goto :if361_end if361_else: $s3 = 1 if361_end: - $s5 = 1 - $v0 = $s5 + $s3 = 1 + $v0 = $s3 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -2417,8 +2909,8 @@ if378_else: $s5 = 0 if378_end: $s7 = $s7 - $s5 = [$s7+0] - $s2 = [$s5+32] + $s2 = [$s7+0] + $s3 = [$s2+32] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2426,20 +2918,20 @@ if378_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s2 = $s5 - if0 $s2 goto :if389_else + $s2 = $v0 + $s3 = $s2 + if0 $s3 goto :if389_else if389_body: $s7 = $s7 - $s2 = [$s7+0] - $s5 = [$s2+16] + $s3 = [$s7+0] + $s2 = [$s3+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2447,27 +2939,27 @@ if389_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s5 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - [$s6+4] = $s2 - $s2 = [$s6+4] - $s5 = [$s2+0] - $s7 = [$s5+80] - $s5 = $s6 + $s3 = $v0 + [$s6+4] = $s3 + $s3 = [$s6+4] + $s2 = [$s3+0] + $s7 = [$s2+80] + $s2 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s2 - $a1 = $s5 + $a0 = $s3 + $a1 = $s2 call $s7 $t3 = local[8] $t4 = local[9] @@ -2481,8 +2973,8 @@ if389_body: if389_else: $s5 = 0 if389_end: - $s6 = 0 - $v0 = $s6 + $s5 = 0 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -2569,8 +3061,8 @@ if401_else: $s5 = 0 if401_end: $s7 = $s7 - $s5 = [$s7+0] - $s2 = [$s5+20] + $s2 = [$s7+0] + $s3 = [$s2+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2578,19 +3070,19 @@ if401_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s2 = $s5 - PrintIntS($s2 ) + $s2 = $v0 + $s3 = $s2 + PrintIntS($s3 ) $s7 = $s7 - $s2 = [$s7+0] - $s5 = [$s2+32] + $s3 = [$s7+0] + $s2 = [$s3+32] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2598,20 +3090,20 @@ if401_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s5 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - if0 $s5 goto :if416_else + $s3 = $v0 + $s2 = $s3 + if0 $s2 goto :if416_else if416_body: $s7 = $s7 - $s5 = [$s7+0] - $s2 = [$s5+16] + $s2 = [$s7+0] + $s3 = [$s2+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2619,27 +3111,27 @@ if416_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s2 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - [$s6+8] = $s5 - $s5 = [$s6+8] - $s2 = [$s5+0] - $s7 = [$s2+80] - $s2 = $s6 + $s2 = $v0 + [$s6+8] = $s2 + $s2 = [$s6+8] + $s3 = [$s2+0] + $s7 = [$s3+80] + $s3 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 + $a0 = $s2 + $a1 = $s3 call $s7 $t3 = local[8] $t4 = local[9] @@ -2653,8 +3145,8 @@ if416_body: if416_else: $s5 = 0 if416_end: - $s6 = 0 - $v0 = $s6 + $s5 = 0 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex37.vaporm b/output/ex37.vaporm index 9f7c8df..d3dfb82 100644 --- a/output/ex37.vaporm +++ b/output/ex37.vaporm @@ -54,19 +54,19 @@ func A_foo [in 0, out 0, local 14] $s7 = 0 while5_test: $s6 = $s7 - $s5 = 10 - $s4 = LtS($s6 $s5 ) - $s5 = $s4 - if0 $s5 goto :while5_end + $s4 = 10 + $s5 = LtS($s6 $s4 ) + $s2 = $s5 + if0 $s2 goto :while5_end while5_body: - $s5 = $s7 - $s4 = 1 - $s6 = Add($s5 $s4 ) - $s7 = $s6 + $s0 = $s7 + $s1 = 1 + $s3 = Add($s0 $s1 ) + $s7 = $s3 goto :while5_test while5_end: - $s6 = $s7 - $v0 = $s6 + $s0 = $s7 + $v0 = $s0 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex38.vaporm b/output/ex38.vaporm index 9f7c8df..d3dfb82 100644 --- a/output/ex38.vaporm +++ b/output/ex38.vaporm @@ -54,19 +54,19 @@ func A_foo [in 0, out 0, local 14] $s7 = 0 while5_test: $s6 = $s7 - $s5 = 10 - $s4 = LtS($s6 $s5 ) - $s5 = $s4 - if0 $s5 goto :while5_end + $s4 = 10 + $s5 = LtS($s6 $s4 ) + $s2 = $s5 + if0 $s2 goto :while5_end while5_body: - $s5 = $s7 - $s4 = 1 - $s6 = Add($s5 $s4 ) - $s7 = $s6 + $s0 = $s7 + $s1 = 1 + $s3 = Add($s0 $s1 ) + $s7 = $s3 goto :while5_test while5_end: - $s6 = $s7 - $v0 = $s6 + $s0 = $s7 + $v0 = $s0 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex41.vaporm b/output/ex41.vaporm index 35a90af..54baf4f 100644 --- a/output/ex41.vaporm +++ b/output/ex41.vaporm @@ -41,7 +41,7 @@ func Main [in 0, out 0, local 14] $s6 = local[6] $s7 = local[7] ret -func A_foo [in 0, out 0, local 14] +func A_foo [in 0, out 0, local 17] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -52,35 +52,53 @@ func A_foo [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = 0 - $s6 = 0 + $t0 = local[14] + $t0 = 0 + local[14] = $t0 while5_test: $s5 = $s7 - $s4 = 10 - $s3 = LtS($s5 $s4 ) - $s4 = $s3 - if0 $s4 goto :while5_end + $t7 = 10 + $s1 = LtS($s5 $t7 ) + $s0 = $s1 + if0 $s0 goto :while5_end while5_body: while10_test: - $s4 = $s6 - $s3 = 100 - $s5 = LtS($s4 $s3 ) - $s3 = $s5 - if0 $s3 goto :while10_end + $t0 = local[14] + $t6 = $t0 + local[14] = $t0 + $t0 = local[15] + $t0 = 100 + local[15] = $t0 + $t0 = local[15] + $t5 = LtS($t6 $t0 ) + local[15] = $t0 + $t0 = local[16] + $t0 = $t5 + local[16] = $t0 + $t0 = local[16] + if0 $t0 goto :while10_end + local[16] = $t0 while10_body: - $s3 = $s6 - $s5 = 1 - $s4 = Add($s3 $s5 ) - $s6 = $s4 + $t0 = local[14] + $t4 = $t0 + local[14] = $t0 + $t3 = 1 + $s6 = Add($t4 $t3 ) + $t0 = local[14] + $t0 = $s6 + local[14] = $t0 goto :while10_test while10_end: $s4 = $s7 - $s5 = 1 - $s3 = Add($s4 $s5 ) + $s2 = 1 + $s3 = Add($s4 $s2 ) $s7 = $s3 goto :while5_test while5_end: - $s7 = $s6 - $v0 = $s7 + $t0 = local[14] + $t5 = $t0 + local[14] = $t0 + $v0 = $t5 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/vaporize/RegisterAlloc.java b/vaporize/RegisterAlloc.java index 100d6c4..3afdb02 100644 --- a/vaporize/RegisterAlloc.java +++ b/vaporize/RegisterAlloc.java @@ -70,10 +70,16 @@ public class RegisterAlloc { } private void spillAtInterval(LIRVar interval) { - // You can make this spill optimally (the sarkar linearscan algorithm) + this.intervals.addSpilledNum(); + LIRVar spill = this.active.last(); + if (spill.getLastUse() > interval.getLastUse()) { + interval.assignRegister(spill.getAssignedRegister()); + this.active.add(interval); + this.active.remove(spill); + interval = spill; + } MinimalLogger.severe(String.format("Ran out of free registers, had to spill %s!", interval.toString())); - this.intervals.addSpilledNum(); interval.assignRegister(String.format("local[%d]", this.spill_start++)); } |