diff options
86 files changed, 37792 insertions, 3589 deletions
@@ -27,16 +27,7 @@ public class VM2M { VaporProgram prog = parseVapor(is2, System.out); - MinimalLogger.info("Removing extraneous lines from the program representation..."); - for (String line : new ArrayList<String>(strProg)) { - // delete all lines not a function table! - if (!line.trim().startsWith("const") && !line.trim().startsWith(":")) - strProg.remove(line); - } - MinimalLogger.info(String.format("New program: %s", - strProg.toString())); - - CondenseVisitor cv = new CondenseVisitor(prog, strProg); + CondenseVisitor cv = new CondenseVisitor(prog); System.out.println(String.join("\n", cv.getMIPS())); diff --git a/base/BinaryTree.opt.s b/base/BinaryTree.opt.s new file mode 100644 index 0000000..3cea30c --- /dev/null +++ b/base/BinaryTree.opt.s @@ -0,0 +1,1064 @@ +.data + +empty_BT: + +empty_Tree: + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + la $a0 empty_BT + jal BT.Start + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BT.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + li $a0 24 + jal _heapAlloc + move $s0 $v0 + bnez $s0 null1 + la $a0 _str0 + j _error +null1: + move $a0 $s0 + li $a1 16 + jal Tree.Init + bnez $s0 null2 + la $a0 _str0 + j _error +null2: + move $a0 $s0 + jal Tree.Print + li $a0 100000000 + jal _print + bnez $s0 null3 + la $a0 _str0 + j _error +null3: + move $a0 $s0 + li $a1 8 + jal Tree.Insert + bnez $s0 null4 + la $a0 _str0 + j _error +null4: + move $a0 $s0 + jal Tree.Print + bnez $s0 null5 + la $a0 _str0 + j _error +null5: + move $a0 $s0 + li $a1 24 + jal Tree.Insert + bnez $s0 null6 + la $a0 _str0 + j _error +null6: + move $a0 $s0 + li $a1 4 + jal Tree.Insert + bnez $s0 null7 + la $a0 _str0 + j _error +null7: + move $a0 $s0 + li $a1 12 + jal Tree.Insert + bnez $s0 null8 + la $a0 _str0 + j _error +null8: + move $a0 $s0 + li $a1 20 + jal Tree.Insert + bnez $s0 null9 + la $a0 _str0 + j _error +null9: + move $a0 $s0 + li $a1 28 + jal Tree.Insert + bnez $s0 null10 + la $a0 _str0 + j _error +null10: + move $a0 $s0 + li $a1 14 + jal Tree.Insert + bnez $s0 null11 + la $a0 _str0 + j _error +null11: + move $a0 $s0 + jal Tree.Print + bnez $s0 null12 + la $a0 _str0 + j _error +null12: + move $a0 $s0 + li $a1 24 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null13 + la $a0 _str0 + j _error +null13: + move $a0 $s0 + li $a1 12 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null14 + la $a0 _str0 + j _error +null14: + move $a0 $s0 + li $a1 16 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null15 + la $a0 _str0 + j _error +null15: + move $a0 $s0 + li $a1 50 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null16 + la $a0 _str0 + j _error +null16: + move $a0 $s0 + li $a1 12 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null17 + la $a0 _str0 + j _error +null17: + move $a0 $s0 + li $a1 12 + jal Tree.Delete + bnez $s0 null18 + la $a0 _str0 + j _error +null18: + move $a0 $s0 + jal Tree.Print + bnez $s0 null19 + la $a0 _str0 + j _error +null19: + move $a0 $s0 + li $a1 12 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +Tree.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 8($t0) + sw $0 12($t0) + sw $0 16($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 4($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 0($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 0($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 16($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 12($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 12($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 16($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + addu $t2 $t1 1 + slt $t1 $t0 $t1 + beqz $t1 if1_else + li $t1 0 + j if1_end +if1_else: + slt $t2 $t0 $t2 + bnez $t2 if2_else + li $t1 0 + j if2_end +if2_else: + li $t1 1 +if2_end: +if1_end: + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + li $a0 24 + jal _heapAlloc + move $s2 $v0 + bnez $s2 null20 + la $a0 _str0 + j _error +null20: + move $a0 $s2 + move $a1 $s1 + jal Tree.Init + move $s0 $s0 + li $s3 1 +while1_top: + beqz $s3 while1_end + bnez $s0 null21 + la $a0 _str0 + j _error +null21: + move $a0 $s0 + jal Tree.GetKey + move $t0 $v0 + slt $t0 $s1 $t0 + beqz $t0 if3_else + bnez $s0 null22 + la $a0 _str0 + j _error +null22: + move $a0 $s0 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if4_else + bnez $s0 null23 + la $a0 _str0 + j _error +null23: + move $a0 $s0 + jal Tree.GetLeft + move $s0 $v0 + j if4_end +if4_else: + li $s3 0 + bnez $s0 null24 + la $a0 _str0 + j _error +null24: + move $a0 $s0 + li $a1 1 + jal Tree.SetHas_Left + bnez $s0 null25 + la $a0 _str0 + j _error +null25: + move $a0 $s0 + move $a1 $s2 + jal Tree.SetLeft +if4_end: + j if3_end +if3_else: + bnez $s0 null26 + la $a0 _str0 + j _error +null26: + move $a0 $s0 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if5_else + bnez $s0 null27 + la $a0 _str0 + j _error +null27: + move $a0 $s0 + jal Tree.GetRight + move $s0 $v0 + j if5_end +if5_else: + li $s3 0 + bnez $s0 null28 + la $a0 _str0 + j _error +null28: + move $a0 $s0 + li $a1 1 + jal Tree.SetHas_Right + bnez $s0 null29 + la $a0 _str0 + j _error +null29: + move $a0 $s0 + move $a1 $s2 + jal Tree.SetRight +if5_end: +if3_end: + j while1_top +while1_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 36 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + sw $s4 16($sp) + sw $s5 20($sp) + sw $s6 24($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $s0 + move $s3 $s0 + li $s4 1 + li $s5 0 + li $s6 1 +while2_top: + beqz $s4 while2_end + bnez $s2 null30 + la $a0 _str0 + j _error +null30: + move $a0 $s2 + jal Tree.GetKey + move $t0 $v0 + slt $t1 $s1 $t0 + beqz $t1 if6_else + bnez $s2 null31 + la $a0 _str0 + j _error +null31: + move $a0 $s2 + jal Tree.GetHas_Left + move $t1 $v0 + beqz $t1 if7_else + move $s3 $s2 + bnez $s2 null32 + la $a0 _str0 + j _error +null32: + move $a0 $s2 + jal Tree.GetLeft + move $s2 $v0 + j if7_end +if7_else: + li $s4 0 +if7_end: + j if6_end +if6_else: + slt $t0 $t0 $s1 + beqz $t0 if8_else + bnez $s2 null33 + la $a0 _str0 + j _error +null33: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if9_else + move $s3 $s2 + bnez $s2 null34 + la $a0 _str0 + j _error +null34: + move $a0 $s2 + jal Tree.GetRight + move $s2 $v0 + j if9_end +if9_else: + li $s4 0 +if9_end: + j if8_end +if8_else: + beqz $s6 if10_else + bnez $s2 null35 + la $a0 _str0 + j _error +null35: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + bnez $t0 if11_else + bnez $s2 null36 + la $a0 _str0 + j _error +null36: + move $a0 $s2 + jal Tree.GetHas_Left + move $t0 $v0 + bnez $t0 if11_else + j if11_end +if11_else: + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jal Tree.Remove +if11_end: + j if10_end +if10_else: + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jal Tree.Remove +if10_end: + li $s5 1 + li $s4 0 +if8_end: +if6_end: + li $s6 0 + j while2_top +while2_end: + move $v0 $s5 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $s4 16($sp) + lw $s5 20($sp) + lw $s6 24($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 36 + jr $ra + +Tree.Remove: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 + bnez $s2 null37 + la $a0 _str0 + j _error +null37: + move $a0 $s2 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if12_else + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jal Tree.RemoveLeft + j if12_end +if12_else: + bnez $s2 null38 + la $a0 _str0 + j _error +null38: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if13_else + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jal Tree.RemoveRight + j if13_end +if13_else: + bnez $s2 null39 + la $a0 _str0 + j _error +null39: + move $a0 $s2 + jal Tree.GetKey + move $s2 $v0 + bnez $s1 null40 + la $a0 _str0 + j _error +null40: + move $a0 $s1 + jal Tree.GetLeft + move $t0 $v0 + bnez $t0 null41 + la $a0 _str0 + j _error +null41: + move $a0 $t0 + jal Tree.GetKey + move $t0 $v0 + move $a0 $s0 + move $a1 $s2 + move $a2 $t0 + jal Tree.Compare + move $t0 $v0 + beqz $t0 if14_else + bnez $s1 null42 + la $a0 _str0 + j _error +null42: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetLeft + bnez $s1 null43 + la $a0 _str0 + j _error +null43: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Left + j if14_end +if14_else: + bnez $s1 null44 + la $a0 _str0 + j _error +null44: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetRight + bnez $s1 null45 + la $a0 _str0 + j _error +null45: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Right +if14_end: +if13_end: +if12_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.RemoveRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while3_top: + bnez $s2 null46 + la $a0 _str0 + j _error +null46: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 while3_end + bnez $s2 null47 + la $a0 _str0 + j _error +null47: + bnez $s2 null48 + la $a0 _str0 + j _error +null48: + move $a0 $s2 + jal Tree.GetRight + move $t0 $v0 + bnez $t0 null49 + la $a0 _str0 + j _error +null49: + move $a0 $t0 + jal Tree.GetKey + move $t0 $v0 + move $a0 $s2 + move $a1 $t0 + jal Tree.SetKey + move $s1 $s2 + bnez $s2 null50 + la $a0 _str0 + j _error +null50: + move $a0 $s2 + jal Tree.GetRight + move $s2 $v0 + j while3_top +while3_end: + bnez $s1 null51 + la $a0 _str0 + j _error +null51: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetRight + bnez $s1 null52 + la $a0 _str0 + j _error +null52: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Right + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.RemoveLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while4_top: + bnez $s2 null53 + la $a0 _str0 + j _error +null53: + move $a0 $s2 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 while4_end + bnez $s2 null54 + la $a0 _str0 + j _error +null54: + bnez $s2 null55 + la $a0 _str0 + j _error +null55: + move $a0 $s2 + jal Tree.GetLeft + move $t0 $v0 + bnez $t0 null56 + la $a0 _str0 + j _error +null56: + move $a0 $t0 + jal Tree.GetKey + move $t0 $v0 + move $a0 $s2 + move $a1 $t0 + jal Tree.SetKey + move $s1 $s2 + bnez $s2 null57 + la $a0 _str0 + j _error +null57: + move $a0 $s2 + jal Tree.GetLeft + move $s2 $v0 + j while4_top +while4_end: + bnez $s1 null58 + la $a0 _str0 + j _error +null58: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetLeft + bnez $s1 null59 + la $a0 _str0 + j _error +null59: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Left + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $t0 $a0 + move $s0 $a1 + move $s1 $t0 + li $s2 1 + li $s3 0 +while5_top: + beqz $s2 while5_end + bnez $s1 null60 + la $a0 _str0 + j _error +null60: + move $a0 $s1 + jal Tree.GetKey + move $t0 $v0 + slt $t1 $s0 $t0 + beqz $t1 if15_else + bnez $s1 null61 + la $a0 _str0 + j _error +null61: + move $a0 $s1 + jal Tree.GetHas_Left + move $t1 $v0 + beqz $t1 if16_else + bnez $s1 null62 + la $a0 _str0 + j _error +null62: + move $a0 $s1 + jal Tree.GetLeft + move $s1 $v0 + j if16_end +if16_else: + li $s2 0 +if16_end: + j if15_end +if15_else: + slt $t0 $t0 $s0 + beqz $t0 if17_else + bnez $s1 null63 + la $a0 _str0 + j _error +null63: + move $a0 $s1 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if18_else + bnez $s1 null64 + la $a0 _str0 + j _error +null64: + move $a0 $s1 + jal Tree.GetRight + move $s1 $v0 + j if18_end +if18_else: + li $s2 0 +if18_end: + j if17_end +if17_else: + li $s3 1 + li $s2 0 +if17_end: +if15_end: + j while5_top +while5_end: + move $v0 $s3 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $t0 + move $a0 $t0 + move $a1 $t1 + jal Tree.RecPrint + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.RecPrint: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null65 + la $a0 _str0 + j _error +null65: + move $a0 $s1 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if19_else + bnez $s1 null66 + la $a0 _str0 + j _error +null66: + move $a0 $s1 + jal Tree.GetLeft + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jal Tree.RecPrint + j if19_end +if19_else: +if19_end: + bnez $s1 null67 + la $a0 _str0 + j _error +null67: + move $a0 $s1 + jal Tree.GetKey + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s1 null68 + la $a0 _str0 + j _error +null68: + move $a0 $s1 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if20_else + bnez $s1 null69 + la $a0 _str0 + j _error +null69: + move $a0 $s1 + jal Tree.GetRight + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jal Tree.RecPrint + j if20_end +if20_else: +if20_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/base/BinaryTree.s b/base/BinaryTree.s new file mode 100644 index 0000000..bf3f2ba --- /dev/null +++ b/base/BinaryTree.s @@ -0,0 +1,1272 @@ +.data + +vmt_BT: + BT.Start + +vmt_Tree: + Tree.Init + Tree.SetRight + Tree.SetLeft + Tree.GetRight + Tree.GetLeft + Tree.GetKey + Tree.SetKey + Tree.GetHas_Right + Tree.GetHas_Left + Tree.SetHas_Left + Tree.SetHas_Right + Tree.Compare + Tree.Insert + Tree.Delete + Tree.Remove + Tree.RemoveRight + Tree.RemoveLeft + Tree.Search + Tree.Print + Tree.RecPrint + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 4 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_BT + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BT.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + li $a0 28 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Tree + sw $t9 0($t0) + move $s0 $t0 + bnez $s0 null2 + la $a0 _str0 + j _error +null2: + lw $t0 0($s0) + lw $t0 0($t0) + move $a0 $s0 + li $a1 16 + jalr $t0 + bnez $s0 null3 + la $a0 _str0 + j _error +null3: + lw $t0 0($s0) + lw $t0 72($t0) + move $a0 $s0 + jalr $t0 + li $a0 100000000 + jal _print + bnez $s0 null4 + la $a0 _str0 + j _error +null4: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 8 + jalr $t0 + bnez $s0 null5 + la $a0 _str0 + j _error +null5: + lw $t0 0($s0) + lw $t0 72($t0) + move $a0 $s0 + jalr $t0 + bnez $s0 null6 + la $a0 _str0 + j _error +null6: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 24 + jalr $t0 + bnez $s0 null7 + la $a0 _str0 + j _error +null7: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 4 + jalr $t0 + bnez $s0 null8 + la $a0 _str0 + j _error +null8: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 12 + jalr $t0 + bnez $s0 null9 + la $a0 _str0 + j _error +null9: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 20 + jalr $t0 + bnez $s0 null10 + la $a0 _str0 + j _error +null10: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 28 + jalr $t0 + bnez $s0 null11 + la $a0 _str0 + j _error +null11: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 14 + jalr $t0 + bnez $s0 null12 + la $a0 _str0 + j _error +null12: + lw $t0 0($s0) + lw $t0 72($t0) + move $a0 $s0 + jalr $t0 + bnez $s0 null13 + la $a0 _str0 + j _error +null13: + lw $t0 0($s0) + lw $t0 68($t0) + move $a0 $s0 + li $a1 24 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null14 + la $a0 _str0 + j _error +null14: + lw $t0 0($s0) + lw $t0 68($t0) + move $a0 $s0 + li $a1 12 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null15 + la $a0 _str0 + j _error +null15: + lw $t0 0($s0) + lw $t0 68($t0) + move $a0 $s0 + li $a1 16 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null16 + la $a0 _str0 + j _error +null16: + lw $t0 0($s0) + lw $t0 68($t0) + move $a0 $s0 + li $a1 50 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null17 + la $a0 _str0 + j _error +null17: + lw $t0 0($s0) + lw $t0 68($t0) + move $a0 $s0 + li $a1 12 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null18 + la $a0 _str0 + j _error +null18: + lw $t0 0($s0) + lw $t0 52($t0) + move $a0 $s0 + li $a1 12 + jalr $t0 + bnez $s0 null19 + la $a0 _str0 + j _error +null19: + lw $t0 0($s0) + lw $t0 72($t0) + move $a0 $s0 + jalr $t0 + bnez $s0 null20 + la $a0 _str0 + j _error +null20: + lw $t0 0($s0) + lw $t0 68($t0) + move $a0 $s0 + li $a1 12 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +Tree.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 12($t0) + sw $0 16($t0) + sw $0 20($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 4($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 12($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 12($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 20($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 16($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 16($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 20($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + addu $t2 $t1 1 + slt $t1 $t0 $t1 + beqz $t1 if1_else + li $t1 0 + j if1_end +if1_else: + slt $t2 $t0 $t2 + li $t9 1 + subu $t2 $t9 $t2 + beqz $t2 if2_else + li $t1 0 + j if2_end +if2_else: + li $t1 1 +if2_end: +if1_end: + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + li $a0 28 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Tree + sw $t9 0($t0) + move $s2 $t0 + bnez $s2 null21 + la $a0 _str0 + j _error +null21: + lw $t0 0($s2) + lw $t0 0($t0) + move $a0 $s2 + move $a1 $s1 + jalr $t0 + move $s0 $s0 + li $s3 1 +while1_top: + beqz $s3 while1_end + bnez $s0 null22 + la $a0 _str0 + j _error +null22: + lw $t0 0($s0) + lw $t0 20($t0) + move $a0 $s0 + jalr $t0 + move $t0 $v0 + slt $t0 $s1 $t0 + beqz $t0 if3_else + bnez $s0 null23 + la $a0 _str0 + j _error +null23: + lw $t0 0($s0) + lw $t0 32($t0) + move $a0 $s0 + jalr $t0 + move $t0 $v0 + beqz $t0 if4_else + bnez $s0 null24 + la $a0 _str0 + j _error +null24: + lw $t0 0($s0) + lw $t0 16($t0) + move $a0 $s0 + jalr $t0 + move $s0 $v0 + j if4_end +if4_else: + li $s3 0 + bnez $s0 null25 + la $a0 _str0 + j _error +null25: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + li $a1 1 + jalr $t0 + bnez $s0 null26 + la $a0 _str0 + j _error +null26: + lw $t0 0($s0) + lw $t0 8($t0) + move $a0 $s0 + move $a1 $s2 + jalr $t0 +if4_end: + j if3_end +if3_else: + bnez $s0 null27 + la $a0 _str0 + j _error +null27: + lw $t0 0($s0) + lw $t0 28($t0) + move $a0 $s0 + jalr $t0 + move $t0 $v0 + beqz $t0 if5_else + bnez $s0 null28 + la $a0 _str0 + j _error +null28: + lw $t0 0($s0) + lw $t0 12($t0) + move $a0 $s0 + jalr $t0 + move $s0 $v0 + j if5_end +if5_else: + li $s3 0 + bnez $s0 null29 + la $a0 _str0 + j _error +null29: + lw $t0 0($s0) + lw $t0 40($t0) + move $a0 $s0 + li $a1 1 + jalr $t0 + bnez $s0 null30 + la $a0 _str0 + j _error +null30: + lw $t0 0($s0) + lw $t0 4($t0) + move $a0 $s0 + move $a1 $s2 + jalr $t0 +if5_end: +if3_end: + j while1_top +while1_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 36 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + sw $s4 16($sp) + sw $s5 20($sp) + sw $s6 24($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $s0 + move $s3 $s0 + li $s4 1 + li $s5 0 + li $s6 1 +while2_top: + beqz $s4 while2_end + bnez $s2 null31 + la $a0 _str0 + j _error +null31: + lw $t0 0($s2) + lw $t0 20($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + slt $t1 $s1 $t0 + beqz $t1 if6_else + bnez $s2 null32 + la $a0 _str0 + j _error +null32: + lw $t1 0($s2) + lw $t1 32($t1) + move $a0 $s2 + jalr $t1 + move $t1 $v0 + beqz $t1 if7_else + move $s3 $s2 + bnez $s2 null33 + la $a0 _str0 + j _error +null33: + lw $t1 0($s2) + lw $t1 16($t1) + move $a0 $s2 + jalr $t1 + move $s2 $v0 + j if7_end +if7_else: + li $s4 0 +if7_end: + j if6_end +if6_else: + slt $t0 $t0 $s1 + beqz $t0 if8_else + bnez $s2 null34 + la $a0 _str0 + j _error +null34: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 if9_else + move $s3 $s2 + bnez $s2 null35 + la $a0 _str0 + j _error +null35: + lw $t0 0($s2) + lw $t0 12($t0) + move $a0 $s2 + jalr $t0 + move $s2 $v0 + j if9_end +if9_else: + li $s4 0 +if9_end: + j if8_end +if8_else: + beqz $s6 if10_else + bnez $s2 null36 + la $a0 _str0 + j _error +null36: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + li $t9 1 + subu $t0 $t9 $t0 + beqz $t0 ss1_else + bnez $s2 null37 + la $a0 _str0 + j _error +null37: + lw $t0 0($s2) + lw $t0 32($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + li $t9 1 + subu $t0 $t9 $t0 + j ss1_end +ss1_else: + li $t0 0 +ss1_end: + beqz $t0 if11_else + j if11_end +if11_else: + lw $t0 0($s0) + lw $t0 56($t0) + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jalr $t0 +if11_end: + j if10_end +if10_else: + lw $t0 0($s0) + lw $t0 56($t0) + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jalr $t0 +if10_end: + li $s5 1 + li $s4 0 +if8_end: +if6_end: + li $s6 0 + j while2_top +while2_end: + move $v0 $s5 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $s4 16($sp) + lw $s5 20($sp) + lw $s6 24($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 36 + jr $ra + +Tree.Remove: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 + bnez $s2 null38 + la $a0 _str0 + j _error +null38: + lw $t0 0($s2) + lw $t0 32($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 if12_else + lw $t0 0($s0) + lw $t0 64($t0) + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jalr $t0 + j if12_end +if12_else: + bnez $s2 null39 + la $a0 _str0 + j _error +null39: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 if13_else + lw $t0 0($s0) + lw $t0 60($t0) + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jalr $t0 + j if13_end +if13_else: + bnez $s2 null40 + la $a0 _str0 + j _error +null40: + lw $t0 0($s2) + lw $t0 20($t0) + move $a0 $s2 + jalr $t0 + move $s2 $v0 + bnez $s1 null41 + la $a0 _str0 + j _error +null41: + lw $t0 0($s1) + lw $t0 16($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + bnez $t0 null42 + la $a0 _str0 + j _error +null42: + lw $t1 0($t0) + lw $t1 20($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + lw $t0 0($s0) + lw $t0 44($t0) + move $a0 $s0 + move $a1 $s2 + move $a2 $t1 + jalr $t0 + move $t0 $v0 + beqz $t0 if14_else + bnez $s1 null43 + la $a0 _str0 + j _error +null43: + lw $t0 0($s1) + lw $t0 8($t0) + lw $t1 24($s0) + move $a0 $s1 + move $a1 $t1 + jalr $t0 + bnez $s1 null44 + la $a0 _str0 + j _error +null44: + lw $t1 0($s1) + lw $t1 36($t1) + move $a0 $s1 + li $a1 0 + jalr $t1 + j if14_end +if14_else: + bnez $s1 null45 + la $a0 _str0 + j _error +null45: + lw $t1 0($s1) + lw $t1 4($t1) + lw $t0 24($s0) + move $a0 $s1 + move $a1 $t0 + jalr $t1 + bnez $s1 null46 + la $a0 _str0 + j _error +null46: + lw $t0 0($s1) + lw $t0 40($t0) + move $a0 $s1 + li $a1 0 + jalr $t0 +if14_end: +if13_end: +if12_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.RemoveRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while3_top: + bnez $s2 null47 + la $a0 _str0 + j _error +null47: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 while3_end + bnez $s2 null48 + la $a0 _str0 + j _error +null48: + lw $s3 0($s2) + lw $s3 24($s3) + bnez $s2 null49 + la $a0 _str0 + j _error +null49: + lw $t0 0($s2) + lw $t0 12($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + bnez $t0 null50 + la $a0 _str0 + j _error +null50: + lw $t1 0($t0) + lw $t1 20($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $s2 + move $a1 $t1 + jalr $s3 + move $s1 $s2 + bnez $s2 null51 + la $a0 _str0 + j _error +null51: + lw $t1 0($s2) + lw $t1 12($t1) + move $a0 $s2 + jalr $t1 + move $s2 $v0 + j while3_top +while3_end: + bnez $s1 null52 + la $a0 _str0 + j _error +null52: + lw $t1 0($s1) + lw $t1 4($t1) + lw $t0 24($s0) + move $a0 $s1 + move $a1 $t0 + jalr $t1 + bnez $s1 null53 + la $a0 _str0 + j _error +null53: + lw $t0 0($s1) + lw $t0 40($t0) + move $a0 $s1 + li $a1 0 + jalr $t0 + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.RemoveLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while4_top: + bnez $s2 null54 + la $a0 _str0 + j _error +null54: + lw $t0 0($s2) + lw $t0 32($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 while4_end + bnez $s2 null55 + la $a0 _str0 + j _error +null55: + lw $s3 0($s2) + lw $s3 24($s3) + bnez $s2 null56 + la $a0 _str0 + j _error +null56: + lw $t0 0($s2) + lw $t0 16($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + bnez $t0 null57 + la $a0 _str0 + j _error +null57: + lw $t1 0($t0) + lw $t1 20($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $s2 + move $a1 $t1 + jalr $s3 + move $s1 $s2 + bnez $s2 null58 + la $a0 _str0 + j _error +null58: + lw $t1 0($s2) + lw $t1 16($t1) + move $a0 $s2 + jalr $t1 + move $s2 $v0 + j while4_top +while4_end: + bnez $s1 null59 + la $a0 _str0 + j _error +null59: + lw $t1 0($s1) + lw $t1 8($t1) + lw $t0 24($s0) + move $a0 $s1 + move $a1 $t0 + jalr $t1 + bnez $s1 null60 + la $a0 _str0 + j _error +null60: + lw $t0 0($s1) + lw $t0 36($t0) + move $a0 $s1 + li $a1 0 + jalr $t0 + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $t0 $a0 + move $s0 $a1 + move $s1 $t0 + li $s2 1 + li $s3 0 +while5_top: + beqz $s2 while5_end + bnez $s1 null61 + la $a0 _str0 + j _error +null61: + lw $t0 0($s1) + lw $t0 20($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + slt $t1 $s0 $t0 + beqz $t1 if15_else + bnez $s1 null62 + la $a0 _str0 + j _error +null62: + lw $t1 0($s1) + lw $t1 32($t1) + move $a0 $s1 + jalr $t1 + move $t1 $v0 + beqz $t1 if16_else + bnez $s1 null63 + la $a0 _str0 + j _error +null63: + lw $t1 0($s1) + lw $t1 16($t1) + move $a0 $s1 + jalr $t1 + move $s1 $v0 + j if16_end +if16_else: + li $s2 0 +if16_end: + j if15_end +if15_else: + slt $t0 $t0 $s0 + beqz $t0 if17_else + bnez $s1 null64 + la $a0 _str0 + j _error +null64: + lw $t0 0($s1) + lw $t0 28($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if18_else + bnez $s1 null65 + la $a0 _str0 + j _error +null65: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $s1 $v0 + j if18_end +if18_else: + li $s2 0 +if18_end: + j if17_end +if17_else: + li $s3 1 + li $s2 0 +if17_end: +if15_end: + j while5_top +while5_end: + move $v0 $s3 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $t0 + lw $t2 0($t0) + lw $t2 76($t2) + move $a0 $t0 + move $a1 $t1 + jalr $t2 + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.RecPrint: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null66 + la $a0 _str0 + j _error +null66: + lw $t0 0($s1) + lw $t0 32($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if19_else + lw $s2 0($s0) + lw $s2 76($s2) + bnez $s1 null67 + la $a0 _str0 + j _error +null67: + lw $t0 0($s1) + lw $t0 16($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jalr $s2 + j if19_end +if19_else: +if19_end: + bnez $s1 null68 + la $a0 _str0 + j _error +null68: + lw $t0 0($s1) + lw $t0 20($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s1 null69 + la $a0 _str0 + j _error +null69: + lw $t0 0($s1) + lw $t0 28($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if20_else + lw $s2 0($s0) + lw $s2 76($s2) + bnez $s1 null70 + la $a0 _str0 + j _error +null70: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jalr $s2 + j if20_end +if20_else: +if20_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/base/BubbleSort.opt.s b/base/BubbleSort.opt.s new file mode 100644 index 0000000..b1e5946 --- /dev/null +++ b/base/BubbleSort.opt.s @@ -0,0 +1,437 @@ +.data + +empty_BBS: + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 8 + jal _heapAlloc + move $t0 $v0 + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + move $a0 $t0 + li $a1 10 + jal BBS.Start + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BBS.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + move $a0 $s0 + move $a1 $t0 + jal BBS.Init + move $a0 $s0 + jal BBS.Print + li $a0 99999 + jal _print + move $a0 $s0 + jal BBS.Sort + move $a0 $s0 + jal BBS.Print + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +BBS.Sort: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t1 4($t0) + subu $t1 $t1 1 + li $t2 -1 +while1_top: + slt $t3 $t2 $t1 + beqz $t3 while1_end + li $t3 1 +while2_top: + addu $t4 $t1 1 + slt $t4 $t3 $t4 + beqz $t4 while2_end + subu $t4 $t3 1 + lw $t5 0($t0) + bnez $t5 null2 + la $a0 _str0 + j _error +null2: + lw $t6 0($t5) + sltu $t6 $t4 $t6 + bnez $t6 bounds1 + la $a0 _str1 + j _error +bounds1: + mul $t6 $t4 4 + addu $t6 $t6 $t5 + lw $t6 4($t6) + lw $t5 0($t0) + bnez $t5 null3 + la $a0 _str0 + j _error +null3: + lw $t4 0($t5) + sltu $t4 $t3 $t4 + bnez $t4 bounds2 + la $a0 _str1 + j _error +bounds2: + mul $t4 $t3 4 + addu $t4 $t4 $t5 + lw $t4 4($t4) + slt $t4 $t4 $t6 + beqz $t4 if1_else + subu $t4 $t3 1 + lw $t6 0($t0) + bnez $t6 null4 + la $a0 _str0 + j _error +null4: + lw $t5 0($t6) + sltu $t5 $t4 $t5 + bnez $t5 bounds3 + la $a0 _str1 + j _error +bounds3: + mul $t5 $t4 4 + addu $t5 $t5 $t6 + lw $t5 4($t5) + lw $t6 0($t0) + bnez $t6 null5 + la $a0 _str0 + j _error +null5: + lw $t7 0($t6) + sltu $t7 $t4 $t7 + bnez $t7 bounds4 + la $a0 _str1 + j _error +bounds4: + mul $t7 $t4 4 + addu $t7 $t7 $t6 + lw $t6 0($t0) + bnez $t6 null6 + la $a0 _str0 + j _error +null6: + lw $t4 0($t6) + sltu $t4 $t3 $t4 + bnez $t4 bounds5 + la $a0 _str1 + j _error +bounds5: + mul $t4 $t3 4 + addu $t4 $t4 $t6 + lw $t4 4($t4) + sw $t4 4($t7) + lw $t4 0($t0) + bnez $t4 null7 + la $a0 _str0 + j _error +null7: + lw $t7 0($t4) + sltu $t7 $t3 $t7 + bnez $t7 bounds6 + la $a0 _str1 + j _error +bounds6: + mul $t7 $t3 4 + addu $t7 $t7 $t4 + sw $t5 4($t7) + j if1_end +if1_else: +if1_end: + addu $t3 $t3 1 + j while2_top +while2_end: + subu $t1 $t1 1 + j while1_top +while1_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BBS.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t1 0 +while3_top: + lw $t2 4($t0) + slt $t2 $t1 $t2 + beqz $t2 while3_end + lw $t2 0($t0) + bnez $t2 null8 + la $a0 _str0 + j _error +null8: + lw $t3 0($t2) + sltu $t3 $t1 $t3 + bnez $t3 bounds7 + la $a0 _str1 + j _error +bounds7: + mul $t3 $t1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + move $a0 $t3 + jal _print + addu $t1 $t1 1 + j while3_top +while3_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BBS.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + sw $t0 4($s0) + move $a0 $t0 + jal AllocArray + move $t0 $v0 + sw $t0 0($s0) + lw $t0 0($s0) + bnez $t0 null9 + la $a0 _str0 + j _error +null9: + lw $t1 0($t0) + li $t9 0 + sltu $t1 $t9 $t1 + bnez $t1 bounds8 + la $a0 _str1 + j _error +bounds8: + li $t1 0 + addu $t1 $t1 $t0 + li $t9 20 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null10 + la $a0 _str0 + j _error +null10: + lw $t0 0($t1) + li $t9 1 + sltu $t0 $t9 $t0 + bnez $t0 bounds9 + la $a0 _str1 + j _error +bounds9: + li $t0 4 + addu $t0 $t0 $t1 + li $t9 7 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null11 + la $a0 _str0 + j _error +null11: + lw $t1 0($t0) + li $t9 2 + sltu $t1 $t9 $t1 + bnez $t1 bounds10 + la $a0 _str1 + j _error +bounds10: + li $t1 8 + addu $t1 $t1 $t0 + li $t9 12 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null12 + la $a0 _str0 + j _error +null12: + lw $t0 0($t1) + li $t9 3 + sltu $t0 $t9 $t0 + bnez $t0 bounds11 + la $a0 _str1 + j _error +bounds11: + li $t0 12 + addu $t0 $t0 $t1 + li $t9 18 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null13 + la $a0 _str0 + j _error +null13: + lw $t1 0($t0) + li $t9 4 + sltu $t1 $t9 $t1 + bnez $t1 bounds12 + la $a0 _str1 + j _error +bounds12: + li $t1 16 + addu $t1 $t1 $t0 + li $t9 2 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null14 + la $a0 _str0 + j _error +null14: + lw $t0 0($t1) + li $t9 5 + sltu $t0 $t9 $t0 + bnez $t0 bounds13 + la $a0 _str1 + j _error +bounds13: + li $t0 20 + addu $t0 $t0 $t1 + li $t9 11 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null15 + la $a0 _str0 + j _error +null15: + lw $t1 0($t0) + li $t9 6 + sltu $t1 $t9 $t1 + bnez $t1 bounds14 + la $a0 _str1 + j _error +bounds14: + li $t1 24 + addu $t1 $t1 $t0 + li $t9 6 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null16 + la $a0 _str0 + j _error +null16: + lw $t0 0($t1) + li $t9 7 + sltu $t0 $t9 $t0 + bnez $t0 bounds15 + la $a0 _str1 + j _error +bounds15: + li $t0 28 + addu $t0 $t0 $t1 + li $t9 9 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null17 + la $a0 _str0 + j _error +null17: + lw $t1 0($t0) + li $t9 8 + sltu $t1 $t9 $t1 + bnez $t1 bounds16 + la $a0 _str1 + j _error +bounds16: + li $t1 32 + addu $t1 $t1 $t0 + li $t9 19 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null18 + la $a0 _str0 + j _error +null18: + lw $t0 0($t1) + li $t9 9 + sltu $t0 $t9 $t0 + bnez $t0 bounds17 + la $a0 _str1 + j _error +bounds17: + li $t0 36 + addu $t0 $t0 $t1 + li $t9 5 + sw $t9 4($t0) + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + mul $t1 $t0 4 + addu $t1 $t1 4 + move $a0 $t1 + jal _heapAlloc + move $t1 $v0 + sw $t0 0($t1) + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" +_str1: .asciiz "array index out of bounds\n" diff --git a/base/BubbleSort.s b/base/BubbleSort.s new file mode 100644 index 0000000..8d4676e --- /dev/null +++ b/base/BubbleSort.s @@ -0,0 +1,453 @@ +.data + +vmt_BBS: + BBS.Start + BBS.Sort + BBS.Print + BBS.Init + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 12 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_BBS + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + li $a1 10 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BBS.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + lw $t1 0($s0) + lw $t1 12($t1) + move $a0 $s0 + move $a1 $t0 + jalr $t1 + lw $t1 0($s0) + lw $t1 8($t1) + move $a0 $s0 + jalr $t1 + li $a0 99999 + jal _print + lw $t1 0($s0) + lw $t1 4($t1) + move $a0 $s0 + jalr $t1 + lw $t1 0($s0) + lw $t1 8($t1) + move $a0 $s0 + jalr $t1 + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +BBS.Sort: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t1 8($t0) + subu $t1 $t1 1 + li $t2 -1 +while1_top: + slt $t3 $t2 $t1 + beqz $t3 while1_end + li $t3 1 +while2_top: + addu $t4 $t1 1 + slt $t4 $t3 $t4 + beqz $t4 while2_end + subu $t4 $t3 1 + lw $t5 4($t0) + bnez $t5 null2 + la $a0 _str0 + j _error +null2: + lw $t6 0($t5) + sltu $t6 $t4 $t6 + bnez $t6 bounds1 + la $a0 _str1 + j _error +bounds1: + mul $t6 $t4 4 + addu $t6 $t6 $t5 + lw $t6 4($t6) + lw $t5 4($t0) + bnez $t5 null3 + la $a0 _str0 + j _error +null3: + lw $t4 0($t5) + sltu $t4 $t3 $t4 + bnez $t4 bounds2 + la $a0 _str1 + j _error +bounds2: + mul $t4 $t3 4 + addu $t4 $t4 $t5 + lw $t4 4($t4) + slt $t4 $t4 $t6 + beqz $t4 if1_else + subu $t4 $t3 1 + lw $t6 4($t0) + bnez $t6 null4 + la $a0 _str0 + j _error +null4: + lw $t5 0($t6) + sltu $t5 $t4 $t5 + bnez $t5 bounds3 + la $a0 _str1 + j _error +bounds3: + mul $t5 $t4 4 + addu $t5 $t5 $t6 + lw $t5 4($t5) + lw $t6 4($t0) + bnez $t6 null5 + la $a0 _str0 + j _error +null5: + lw $t7 0($t6) + sltu $t7 $t4 $t7 + bnez $t7 bounds4 + la $a0 _str1 + j _error +bounds4: + mul $t7 $t4 4 + addu $t7 $t7 $t6 + lw $t6 4($t0) + bnez $t6 null6 + la $a0 _str0 + j _error +null6: + lw $t4 0($t6) + sltu $t4 $t3 $t4 + bnez $t4 bounds5 + la $a0 _str1 + j _error +bounds5: + mul $t4 $t3 4 + addu $t4 $t4 $t6 + lw $t4 4($t4) + sw $t4 4($t7) + lw $t4 4($t0) + bnez $t4 null7 + la $a0 _str0 + j _error +null7: + lw $t7 0($t4) + sltu $t7 $t3 $t7 + bnez $t7 bounds6 + la $a0 _str1 + j _error +bounds6: + mul $t7 $t3 4 + addu $t7 $t7 $t4 + sw $t5 4($t7) + j if1_end +if1_else: +if1_end: + addu $t3 $t3 1 + j while2_top +while2_end: + subu $t1 $t1 1 + j while1_top +while1_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BBS.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t1 0 +while3_top: + lw $t2 8($t0) + slt $t2 $t1 $t2 + beqz $t2 while3_end + lw $t2 4($t0) + bnez $t2 null8 + la $a0 _str0 + j _error +null8: + lw $t3 0($t2) + sltu $t3 $t1 $t3 + bnez $t3 bounds7 + la $a0 _str1 + j _error +bounds7: + mul $t3 $t1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + move $a0 $t3 + jal _print + addu $t1 $t1 1 + j while3_top +while3_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +BBS.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + sw $t0 8($s0) + move $a0 $t0 + jal AllocArray + move $t0 $v0 + sw $t0 4($s0) + lw $t0 4($s0) + bnez $t0 null9 + la $a0 _str0 + j _error +null9: + lw $t1 0($t0) + li $t9 0 + sltu $t1 $t9 $t1 + bnez $t1 bounds8 + la $a0 _str1 + j _error +bounds8: + li $t1 0 + addu $t1 $t1 $t0 + li $t9 20 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null10 + la $a0 _str0 + j _error +null10: + lw $t0 0($t1) + li $t9 1 + sltu $t0 $t9 $t0 + bnez $t0 bounds9 + la $a0 _str1 + j _error +bounds9: + li $t0 4 + addu $t0 $t0 $t1 + li $t9 7 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null11 + la $a0 _str0 + j _error +null11: + lw $t1 0($t0) + li $t9 2 + sltu $t1 $t9 $t1 + bnez $t1 bounds10 + la $a0 _str1 + j _error +bounds10: + li $t1 8 + addu $t1 $t1 $t0 + li $t9 12 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null12 + la $a0 _str0 + j _error +null12: + lw $t0 0($t1) + li $t9 3 + sltu $t0 $t9 $t0 + bnez $t0 bounds11 + la $a0 _str1 + j _error +bounds11: + li $t0 12 + addu $t0 $t0 $t1 + li $t9 18 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null13 + la $a0 _str0 + j _error +null13: + lw $t1 0($t0) + li $t9 4 + sltu $t1 $t9 $t1 + bnez $t1 bounds12 + la $a0 _str1 + j _error +bounds12: + li $t1 16 + addu $t1 $t1 $t0 + li $t9 2 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null14 + la $a0 _str0 + j _error +null14: + lw $t0 0($t1) + li $t9 5 + sltu $t0 $t9 $t0 + bnez $t0 bounds13 + la $a0 _str1 + j _error +bounds13: + li $t0 20 + addu $t0 $t0 $t1 + li $t9 11 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null15 + la $a0 _str0 + j _error +null15: + lw $t1 0($t0) + li $t9 6 + sltu $t1 $t9 $t1 + bnez $t1 bounds14 + la $a0 _str1 + j _error +bounds14: + li $t1 24 + addu $t1 $t1 $t0 + li $t9 6 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null16 + la $a0 _str0 + j _error +null16: + lw $t0 0($t1) + li $t9 7 + sltu $t0 $t9 $t0 + bnez $t0 bounds15 + la $a0 _str1 + j _error +bounds15: + li $t0 28 + addu $t0 $t0 $t1 + li $t9 9 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null17 + la $a0 _str0 + j _error +null17: + lw $t1 0($t0) + li $t9 8 + sltu $t1 $t9 $t1 + bnez $t1 bounds16 + la $a0 _str1 + j _error +bounds16: + li $t1 32 + addu $t1 $t1 $t0 + li $t9 19 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null18 + la $a0 _str0 + j _error +null18: + lw $t0 0($t1) + li $t9 9 + sltu $t0 $t9 $t0 + bnez $t0 bounds17 + la $a0 _str1 + j _error +bounds17: + li $t0 36 + addu $t0 $t0 $t1 + li $t9 5 + sw $t9 4($t0) + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + mul $t1 $t0 4 + addu $t1 $t1 4 + move $a0 $t1 + jal _heapAlloc + move $t1 $v0 + sw $t0 0($t1) + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" +_str1: .asciiz "array index out of bounds\n" diff --git a/base/Factorial.opt.s b/base/Factorial.opt.s new file mode 100644 index 0000000..b743942 --- /dev/null +++ b/base/Factorial.opt.s @@ -0,0 +1,64 @@ +.data + +empty_Fac: + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + la $a0 empty_Fac + li $a1 10 + jal Fac.ComputeFac + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Fac.ComputeFac: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $t0 $a0 + move $s0 $a1 + slti $t1 $s0 1 + beqz $t1 if1_else + li $t1 1 + j if1_end +if1_else: + subu $t2 $s0 1 + move $a0 $t0 + move $a1 $t2 + jal Fac.ComputeFac + move $t2 $v0 + mul $t1 $s0 $t2 +if1_end: + move $v0 $t1 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" diff --git a/base/Factorial.s b/base/Factorial.s new file mode 100644 index 0000000..ee0830b --- /dev/null +++ b/base/Factorial.s @@ -0,0 +1,90 @@ +.data + +vmt_Fac: + Fac.ComputeFac + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 4 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Fac + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + li $a1 10 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Fac.ComputeFac: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $t0 $a0 + move $s0 $a1 + slti $t1 $s0 1 + beqz $t1 if1_else + li $t1 1 + j if1_end +if1_else: + lw $t2 0($t0) + lw $t2 0($t2) + subu $t3 $s0 1 + move $a0 $t0 + move $a1 $t3 + jalr $t2 + move $t3 $v0 + mul $t1 $s0 $t3 +if1_end: + move $v0 $t1 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/base/LinearSearch.opt.s b/base/LinearSearch.opt.s new file mode 100644 index 0000000..92b272e --- /dev/null +++ b/base/LinearSearch.opt.s @@ -0,0 +1,254 @@ +.data + +empty_LS: + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 8 + jal _heapAlloc + move $t0 $v0 + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + move $a0 $t0 + li $a1 10 + jal LS.Start + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +LS.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + move $a0 $s0 + move $a1 $t0 + jal LS.Init + move $a0 $s0 + jal LS.Print + li $a0 9999 + jal _print + move $a0 $s0 + li $a1 8 + jal LS.Search + move $t0 $v0 + move $a0 $t0 + jal _print + move $a0 $s0 + li $a1 12 + jal LS.Search + move $t0 $v0 + move $a0 $t0 + jal _print + move $a0 $s0 + li $a1 17 + jal LS.Search + move $t0 $v0 + move $a0 $t0 + jal _print + move $a0 $s0 + li $a1 50 + jal LS.Search + move $t0 $v0 + move $a0 $t0 + jal _print + li $v0 55 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +LS.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t1 1 +while1_top: + lw $t2 4($t0) + slt $t2 $t1 $t2 + beqz $t2 while1_end + lw $t2 0($t0) + bnez $t2 null2 + la $a0 _str0 + j _error +null2: + lw $t3 0($t2) + sltu $t3 $t1 $t3 + bnez $t3 bounds1 + la $a0 _str1 + j _error +bounds1: + mul $t3 $t1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + move $a0 $t3 + jal _print + addu $t1 $t1 1 + j while1_top +while1_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +LS.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + li $t2 1 + li $t3 0 +while2_top: + lw $t4 4($t0) + slt $t4 $t2 $t4 + beqz $t4 while2_end + lw $t4 0($t0) + bnez $t4 null3 + la $a0 _str0 + j _error +null3: + lw $t5 0($t4) + sltu $t5 $t2 $t5 + bnez $t5 bounds2 + la $a0 _str1 + j _error +bounds2: + mul $t5 $t2 4 + addu $t5 $t5 $t4 + lw $t5 4($t5) + addu $t4 $t1 1 + slt $t6 $t5 $t1 + beqz $t6 if1_else + j if1_end +if1_else: + slt $t4 $t5 $t4 + bnez $t4 if2_else + j if2_end +if2_else: + li $t3 1 + lw $t2 4($t0) +if2_end: +if1_end: + addu $t2 $t2 1 + j while2_top +while2_end: + move $v0 $t3 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +LS.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + sw $t0 4($s0) + move $a0 $t0 + jal AllocArray + move $t0 $v0 + sw $t0 0($s0) + li $t0 1 + lw $t1 4($s0) + addu $t1 $t1 1 +while3_top: + lw $t2 4($s0) + slt $t2 $t0 $t2 + beqz $t2 while3_end + mul $t2 $t0 2 + subu $t3 $t1 3 + lw $t4 0($s0) + bnez $t4 null4 + la $a0 _str0 + j _error +null4: + lw $t5 0($t4) + sltu $t5 $t0 $t5 + bnez $t5 bounds3 + la $a0 _str1 + j _error +bounds3: + mul $t5 $t0 4 + addu $t5 $t5 $t4 + addu $t3 $t2 $t3 + sw $t3 4($t5) + addu $t0 $t0 1 + subu $t1 $t1 1 + j while3_top +while3_end: + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + mul $t1 $t0 4 + addu $t1 $t1 4 + move $a0 $t1 + jal _heapAlloc + move $t1 $v0 + sw $t0 0($t1) + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" +_str1: .asciiz "array index out of bounds\n" diff --git a/base/LinearSearch.s b/base/LinearSearch.s new file mode 100644 index 0000000..711126b --- /dev/null +++ b/base/LinearSearch.s @@ -0,0 +1,276 @@ +.data + +vmt_LS: + LS.Start + LS.Print + LS.Search + LS.Init + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 12 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_LS + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + li $a1 10 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +LS.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + lw $t1 0($s0) + lw $t1 12($t1) + move $a0 $s0 + move $a1 $t0 + jalr $t1 + lw $t1 0($s0) + lw $t1 4($t1) + move $a0 $s0 + jalr $t1 + li $a0 9999 + jal _print + lw $t1 0($s0) + lw $t1 8($t1) + move $a0 $s0 + li $a1 8 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $t1 0($s0) + lw $t1 8($t1) + move $a0 $s0 + li $a1 12 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $t1 0($s0) + lw $t1 8($t1) + move $a0 $s0 + li $a1 17 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $t1 0($s0) + lw $t1 8($t1) + move $a0 $s0 + li $a1 50 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + li $v0 55 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +LS.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t1 1 +while1_top: + lw $t2 8($t0) + slt $t2 $t1 $t2 + beqz $t2 while1_end + lw $t2 4($t0) + bnez $t2 null2 + la $a0 _str0 + j _error +null2: + lw $t3 0($t2) + sltu $t3 $t1 $t3 + bnez $t3 bounds1 + la $a0 _str1 + j _error +bounds1: + mul $t3 $t1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + move $a0 $t3 + jal _print + addu $t1 $t1 1 + j while1_top +while1_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +LS.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + li $t2 1 + li $t3 0 +while2_top: + lw $t4 8($t0) + slt $t4 $t2 $t4 + beqz $t4 while2_end + lw $t4 4($t0) + bnez $t4 null3 + la $a0 _str0 + j _error +null3: + lw $t5 0($t4) + sltu $t5 $t2 $t5 + bnez $t5 bounds2 + la $a0 _str1 + j _error +bounds2: + mul $t5 $t2 4 + addu $t5 $t5 $t4 + lw $t5 4($t5) + addu $t4 $t1 1 + slt $t6 $t5 $t1 + beqz $t6 if1_else + j if1_end +if1_else: + slt $t4 $t5 $t4 + li $t9 1 + subu $t4 $t9 $t4 + beqz $t4 if2_else + j if2_end +if2_else: + li $t3 1 + lw $t2 8($t0) +if2_end: +if1_end: + addu $t2 $t2 1 + j while2_top +while2_end: + move $v0 $t3 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +LS.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + sw $t0 8($s0) + move $a0 $t0 + jal AllocArray + move $t0 $v0 + sw $t0 4($s0) + li $t0 1 + lw $t1 8($s0) + addu $t1 $t1 1 +while3_top: + lw $t2 8($s0) + slt $t2 $t0 $t2 + beqz $t2 while3_end + mul $t2 $t0 2 + subu $t3 $t1 3 + lw $t4 4($s0) + bnez $t4 null4 + la $a0 _str0 + j _error +null4: + lw $t5 0($t4) + sltu $t5 $t0 $t5 + bnez $t5 bounds3 + la $a0 _str1 + j _error +bounds3: + mul $t5 $t0 4 + addu $t5 $t5 $t4 + addu $t3 $t2 $t3 + sw $t3 4($t5) + addu $t0 $t0 1 + subu $t1 $t1 1 + j while3_top +while3_end: + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + mul $t1 $t0 4 + addu $t1 $t1 4 + move $a0 $t1 + jal _heapAlloc + move $t1 $v0 + sw $t0 0($t1) + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" +_str1: .asciiz "array index out of bounds\n" diff --git a/base/LinkedList.opt.s b/base/LinkedList.opt.s new file mode 100644 index 0000000..c02b2cd --- /dev/null +++ b/base/LinkedList.opt.s @@ -0,0 +1,791 @@ +.data + +empty_Element: + +empty_List: + +empty_LL: + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + la $a0 empty_LL + jal LL.Start + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + move $t2 $a2 + move $t3 $a3 + sw $t1 0($t0) + sw $t2 4($t0) + sw $t3 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.GetAge: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 0($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.GetSalary: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.GetMarried: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.Equal: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + li $s2 1 + bnez $s1 null1 + la $a0 _str0 + j _error +null1: + move $a0 $s1 + jal Element.GetAge + move $t0 $v0 + lw $t1 0($s0) + move $a0 $s0 + move $a1 $t0 + move $a2 $t1 + jal Element.Compare + move $t1 $v0 + bnez $t1 if1_else + li $s2 0 + j if1_end +if1_else: + bnez $s1 null2 + la $a0 _str0 + j _error +null2: + move $a0 $s1 + jal Element.GetSalary + move $t1 $v0 + lw $t0 4($s0) + move $a0 $s0 + move $a1 $t1 + move $a2 $t0 + jal Element.Compare + move $t0 $v0 + bnez $t0 if2_else + li $s2 0 + j if2_end +if2_else: + lw $t0 8($s0) + beqz $t0 if3_else + bnez $s1 null3 + la $a0 _str0 + j _error +null3: + move $a0 $s1 + jal Element.GetMarried + move $t0 $v0 + bnez $t0 if4_else + li $s2 0 + j if4_end +if4_else: +if4_end: + j if3_end +if3_else: + bnez $s1 null4 + la $a0 _str0 + j _error +null4: + move $a0 $s1 + jal Element.GetMarried + move $t0 $v0 + beqz $t0 if5_else + li $s2 0 + j if5_end +if5_else: +if5_end: +if3_end: +if2_end: +if1_end: + move $v0 $s2 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Element.Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + addu $t2 $t1 1 + slt $t1 $t0 $t1 + beqz $t1 if6_else + li $t1 0 + j if6_end +if6_else: + slt $t2 $t0 $t2 + bnez $t2 if7_else + li $t1 0 + j if7_end +if7_else: + li $t1 1 +if7_end: +if6_end: + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t9 1 + sw $t9 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.InitNew: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + move $t2 $a2 + move $t3 $a3 + sw $t3 8($t0) + sw $t1 0($t0) + sw $t2 4($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $t0 $a0 + move $t1 $a1 + move $t0 $t0 + li $a0 12 + jal _heapAlloc + move $s0 $v0 + bnez $s0 null5 + la $a0 _str0 + j _error +null5: + move $a0 $s0 + move $a1 $t1 + move $a2 $t0 + li $a3 0 + jal List.InitNew + move $v0 $s0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +List.SetNext: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 4($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 40 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + sw $s4 16($sp) + sw $s5 20($sp) + sw $s6 24($sp) + sw $s7 28($sp) + move $t0 $a0 + move $s0 $a1 + move $s1 $t0 + li $s2 0 + li $s3 -1 + move $s4 $t0 + move $s5 $t0 + lw $s6 8($t0) + lw $s7 0($t0) +while1_top: + bnez $s6 ss1_else + li $t9 1 + subu $t0 $t9 $s2 + j ss1_end +ss1_else: + li $t0 0 +ss1_end: + beqz $t0 while1_end + bnez $s0 null6 + la $a0 _str0 + j _error +null6: + move $a0 $s0 + move $a1 $s7 + jal Element.Equal + move $t0 $v0 + beqz $t0 if8_else + li $s2 1 + slti $t0 $s3 0 + beqz $t0 if9_else + bnez $s4 null7 + la $a0 _str0 + j _error +null7: + move $a0 $s4 + jal List.GetNext + move $s1 $v0 + j if9_end +if9_else: + li $t0 -555 + move $a0 $t0 + jal _print + bnez $s5 null8 + la $a0 _str0 + j _error +null8: + bnez $s4 null9 + la $a0 _str0 + j _error +null9: + move $a0 $s4 + jal List.GetNext + move $t0 $v0 + move $a0 $s5 + move $a1 $t0 + jal List.SetNext + li $t0 -555 + move $a0 $t0 + jal _print +if9_end: + j if8_end +if8_else: +if8_end: + bnez $s2 if10_else + move $s5 $s4 + bnez $s4 null10 + la $a0 _str0 + j _error +null10: + move $a0 $s4 + jal List.GetNext + move $s4 $v0 + bnez $s4 null11 + la $a0 _str0 + j _error +null11: + move $a0 $s4 + jal List.GetEnd + move $s6 $v0 + bnez $s4 null12 + la $a0 _str0 + j _error +null12: + move $a0 $s4 + jal List.GetElem + move $s7 $v0 + li $s3 1 + j if10_end +if10_else: +if10_end: + j while1_top +while1_end: + move $v0 $s1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $s4 16($sp) + lw $s5 20($sp) + lw $s6 24($sp) + lw $s7 28($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 40 + jr $ra + +List.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $t0 $a0 + move $s0 $a1 + li $s1 0 + move $s2 $t0 + lw $s3 8($t0) + lw $t0 0($t0) +while2_top: + li $t9 1 + subu $t1 $t9 $s3 + beqz $t1 while2_end + bnez $s0 null13 + la $a0 _str0 + j _error +null13: + move $a0 $s0 + move $a1 $t0 + jal Element.Equal + move $t1 $v0 + beqz $t1 if11_else + li $s1 1 + j if11_end +if11_else: +if11_end: + bnez $s2 null14 + la $a0 _str0 + j _error +null14: + move $a0 $s2 + jal List.GetNext + move $s2 $v0 + bnez $s2 null15 + la $a0 _str0 + j _error +null15: + move $a0 $s2 + jal List.GetEnd + move $s3 $v0 + bnez $s2 null16 + la $a0 _str0 + j _error +null16: + move $a0 $s2 + jal List.GetElem + move $t0 $v0 + j while2_top +while2_end: + move $v0 $s1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +List.GetEnd: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.GetElem: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 0($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.GetNext: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $t0 $a0 + move $s0 $t0 + lw $s1 8($t0) + lw $t0 0($t0) +while3_top: + li $t9 1 + subu $t1 $t9 $s1 + beqz $t1 while3_end + bnez $t0 null17 + la $a0 _str0 + j _error +null17: + move $a0 $t0 + jal Element.GetAge + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s0 null18 + la $a0 _str0 + j _error +null18: + move $a0 $s0 + jal List.GetNext + move $s0 $v0 + bnez $s0 null19 + la $a0 _str0 + j _error +null19: + move $a0 $s0 + jal List.GetEnd + move $s1 $v0 + bnez $s0 null20 + la $a0 _str0 + j _error +null20: + move $a0 $s0 + jal List.GetElem + move $t0 $v0 + j while3_top +while3_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +LL.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + li $a0 12 + jal _heapAlloc + move $s0 $v0 + bnez $s0 null21 + la $a0 _str0 + j _error +null21: + move $a0 $s0 + jal List.Init + move $s0 $s0 + bnez $s0 null22 + la $a0 _str0 + j _error +null22: + move $a0 $s0 + jal List.Init + bnez $s0 null23 + la $a0 _str0 + j _error +null23: + move $a0 $s0 + jal List.Print + li $a0 12 + jal _heapAlloc + move $s1 $v0 + bnez $s1 null24 + la $a0 _str0 + j _error +null24: + move $a0 $s1 + li $a1 25 + li $a2 37000 + li $a3 0 + jal Element.Init + bnez $s0 null25 + la $a0 _str0 + j _error +null25: + move $a0 $s0 + move $a1 $s1 + jal List.Insert + move $s0 $v0 + bnez $s0 null26 + la $a0 _str0 + j _error +null26: + move $a0 $s0 + jal List.Print + li $a0 10000000 + jal _print + li $a0 12 + jal _heapAlloc + move $s1 $v0 + bnez $s1 null27 + la $a0 _str0 + j _error +null27: + move $a0 $s1 + li $a1 39 + li $a2 42000 + li $a3 1 + jal Element.Init + move $s2 $s1 + bnez $s0 null28 + la $a0 _str0 + j _error +null28: + move $a0 $s0 + move $a1 $s1 + jal List.Insert + move $s0 $v0 + bnez $s0 null29 + la $a0 _str0 + j _error +null29: + move $a0 $s0 + jal List.Print + li $a0 10000000 + jal _print + li $a0 12 + jal _heapAlloc + move $s1 $v0 + bnez $s1 null30 + la $a0 _str0 + j _error +null30: + move $a0 $s1 + li $a1 22 + li $a2 34000 + li $a3 0 + jal Element.Init + bnez $s0 null31 + la $a0 _str0 + j _error +null31: + move $a0 $s0 + move $a1 $s1 + jal List.Insert + move $s0 $v0 + bnez $s0 null32 + la $a0 _str0 + j _error +null32: + move $a0 $s0 + jal List.Print + li $a0 12 + jal _heapAlloc + move $s3 $v0 + bnez $s3 null33 + la $a0 _str0 + j _error +null33: + move $a0 $s3 + li $a1 27 + li $a2 34000 + li $a3 0 + jal Element.Init + bnez $s0 null34 + la $a0 _str0 + j _error +null34: + move $a0 $s0 + move $a1 $s2 + jal List.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null35 + la $a0 _str0 + j _error +null35: + move $a0 $s0 + move $a1 $s3 + jal List.Search + move $t0 $v0 + move $a0 $t0 + jal _print + li $a0 10000000 + jal _print + li $a0 12 + jal _heapAlloc + move $s1 $v0 + bnez $s1 null36 + la $a0 _str0 + j _error +null36: + move $a0 $s1 + li $a1 28 + li $a2 35000 + li $a3 0 + jal Element.Init + bnez $s0 null37 + la $a0 _str0 + j _error +null37: + move $a0 $s0 + move $a1 $s1 + jal List.Insert + move $s0 $v0 + bnez $s0 null38 + la $a0 _str0 + j _error +null38: + move $a0 $s0 + jal List.Print + li $a0 2220000 + jal _print + bnez $s0 null39 + la $a0 _str0 + j _error +null39: + move $a0 $s0 + move $a1 $s2 + jal List.Delete + move $s0 $v0 + bnez $s0 null40 + la $a0 _str0 + j _error +null40: + move $a0 $s0 + jal List.Print + li $a0 33300000 + jal _print + bnez $s0 null41 + la $a0 _str0 + j _error +null41: + move $a0 $s0 + move $a1 $s1 + jal List.Delete + move $s0 $v0 + bnez $s0 null42 + la $a0 _str0 + j _error +null42: + move $a0 $s0 + jal List.Print + li $a0 44440000 + jal _print + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/base/LinkedList.s b/base/LinkedList.s new file mode 100644 index 0000000..593d777 --- /dev/null +++ b/base/LinkedList.s @@ -0,0 +1,944 @@ +.data + +vmt_Element: + Element.Init + Element.GetAge + Element.GetSalary + Element.GetMarried + Element.Equal + Element.Compare + +vmt_List: + List.Init + List.InitNew + List.Insert + List.SetNext + List.Delete + List.Search + List.GetEnd + List.GetElem + List.GetNext + List.Print + +vmt_LL: + LL.Start + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 4 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_LL + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + move $t2 $a2 + move $t3 $a3 + sw $t1 4($t0) + sw $t2 8($t0) + sw $t3 12($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.GetAge: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.GetSalary: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.GetMarried: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 12($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Element.Equal: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + li $s2 1 + bnez $s1 null2 + la $a0 _str0 + j _error +null2: + lw $t0 0($s1) + lw $t0 4($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + lw $t1 0($s0) + lw $t1 20($t1) + lw $t2 4($s0) + move $a0 $s0 + move $a1 $t0 + move $a2 $t2 + jalr $t1 + move $t2 $v0 + li $t9 1 + subu $t2 $t9 $t2 + beqz $t2 if1_else + li $s2 0 + j if1_end +if1_else: + bnez $s1 null3 + la $a0 _str0 + j _error +null3: + lw $t2 0($s1) + lw $t2 8($t2) + move $a0 $s1 + jalr $t2 + move $t2 $v0 + lw $t1 0($s0) + lw $t1 20($t1) + lw $t0 8($s0) + move $a0 $s0 + move $a1 $t2 + move $a2 $t0 + jalr $t1 + move $t0 $v0 + li $t9 1 + subu $t0 $t9 $t0 + beqz $t0 if2_else + li $s2 0 + j if2_end +if2_else: + lw $t0 12($s0) + beqz $t0 if3_else + bnez $s1 null4 + la $a0 _str0 + j _error +null4: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + li $t9 1 + subu $t0 $t9 $t0 + beqz $t0 if4_else + li $s2 0 + j if4_end +if4_else: +if4_end: + j if3_end +if3_else: + bnez $s1 null5 + la $a0 _str0 + j _error +null5: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if5_else + li $s2 0 + j if5_end +if5_else: +if5_end: +if3_end: +if2_end: +if1_end: + move $v0 $s2 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Element.Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + addu $t2 $t1 1 + slt $t1 $t0 $t1 + beqz $t1 if6_else + li $t1 0 + j if6_end +if6_else: + slt $t2 $t0 $t2 + li $t9 1 + subu $t2 $t9 $t2 + beqz $t2 if7_else + li $t1 0 + j if7_end +if7_else: + li $t1 1 +if7_end: +if6_end: + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t9 1 + sw $t9 12($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.InitNew: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + move $t2 $a2 + move $t3 $a3 + sw $t3 12($t0) + sw $t1 4($t0) + sw $t2 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $t0 $a0 + move $t1 $a1 + move $t0 $t0 + li $a0 16 + jal _heapAlloc + move $t2 $v0 + la $t9 vmt_List + sw $t9 0($t2) + move $s0 $t2 + bnez $s0 null6 + la $a0 _str0 + j _error +null6: + lw $t2 0($s0) + lw $t2 4($t2) + move $a0 $s0 + move $a1 $t1 + move $a2 $t0 + li $a3 0 + jalr $t2 + move $v0 $s0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +List.SetNext: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 44 + sw $ra -4($fp) + sw $s0 4($sp) + sw $s1 8($sp) + sw $s2 12($sp) + sw $s3 16($sp) + sw $s4 20($sp) + sw $s5 24($sp) + sw $s6 28($sp) + sw $s7 32($sp) + move $t0 $a0 + move $s0 $a1 + move $s1 $t0 + li $s2 0 + li $s3 -1 + move $s4 $t0 + move $s5 $t0 + lw $s6 12($t0) + lw $s7 4($t0) +while1_top: + li $t9 1 + subu $t0 $t9 $s6 + beqz $t0 ss1_else + li $t9 1 + subu $t0 $t9 $s2 + j ss1_end +ss1_else: + li $t0 0 +ss1_end: + beqz $t0 while1_end + bnez $s0 null7 + la $a0 _str0 + j _error +null7: + lw $t0 0($s0) + lw $t0 16($t0) + move $a0 $s0 + move $a1 $s7 + jalr $t0 + move $t0 $v0 + beqz $t0 if8_else + li $s2 1 + slti $t0 $s3 0 + beqz $t0 if9_else + bnez $s4 null8 + la $a0 _str0 + j _error +null8: + lw $t0 0($s4) + lw $t0 32($t0) + move $a0 $s4 + jalr $t0 + move $s1 $v0 + j if9_end +if9_else: + li $t0 -555 + move $a0 $t0 + jal _print + bnez $s5 null9 + la $a0 _str0 + j _error +null9: + lw $v0 0($s5) + sw $v0 0($sp) + lw $v0 0($sp) + lw $v0 12($v0) + sw $v0 0($sp) + bnez $s4 null10 + la $a0 _str0 + j _error +null10: + lw $t0 0($s4) + lw $t0 32($t0) + move $a0 $s4 + jalr $t0 + move $t0 $v0 + move $a0 $s5 + move $a1 $t0 + lw $v0 0($sp) + jalr $v0 + li $t0 -555 + move $a0 $t0 + jal _print +if9_end: + j if8_end +if8_else: +if8_end: + li $t9 1 + subu $t0 $t9 $s2 + beqz $t0 if10_else + move $s5 $s4 + bnez $s4 null11 + la $a0 _str0 + j _error +null11: + lw $t0 0($s4) + lw $t0 32($t0) + move $a0 $s4 + jalr $t0 + move $s4 $v0 + bnez $s4 null12 + la $a0 _str0 + j _error +null12: + lw $t0 0($s4) + lw $t0 24($t0) + move $a0 $s4 + jalr $t0 + move $s6 $v0 + bnez $s4 null13 + la $a0 _str0 + j _error +null13: + lw $t0 0($s4) + lw $t0 28($t0) + move $a0 $s4 + jalr $t0 + move $s7 $v0 + li $s3 1 + j if10_end +if10_else: +if10_end: + j while1_top +while1_end: + move $v0 $s1 + lw $s0 4($sp) + lw $s1 8($sp) + lw $s2 12($sp) + lw $s3 16($sp) + lw $s4 20($sp) + lw $s5 24($sp) + lw $s6 28($sp) + lw $s7 32($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 44 + jr $ra + +List.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $t0 $a0 + move $s0 $a1 + li $s1 0 + move $s2 $t0 + lw $s3 12($t0) + lw $t0 4($t0) +while2_top: + li $t9 1 + subu $t1 $t9 $s3 + beqz $t1 while2_end + bnez $s0 null14 + la $a0 _str0 + j _error +null14: + lw $t1 0($s0) + lw $t1 16($t1) + move $a0 $s0 + move $a1 $t0 + jalr $t1 + move $t1 $v0 + beqz $t1 if11_else + li $s1 1 + j if11_end +if11_else: +if11_end: + bnez $s2 null15 + la $a0 _str0 + j _error +null15: + lw $t1 0($s2) + lw $t1 32($t1) + move $a0 $s2 + jalr $t1 + move $s2 $v0 + bnez $s2 null16 + la $a0 _str0 + j _error +null16: + lw $t1 0($s2) + lw $t1 24($t1) + move $a0 $s2 + jalr $t1 + move $s3 $v0 + bnez $s2 null17 + la $a0 _str0 + j _error +null17: + lw $t1 0($s2) + lw $t1 28($t1) + move $a0 $s2 + jalr $t1 + move $t0 $v0 + j while2_top +while2_end: + move $v0 $s1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +List.GetEnd: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 12($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.GetElem: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.GetNext: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +List.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $t0 $a0 + move $s0 $t0 + lw $s1 12($t0) + lw $t0 4($t0) +while3_top: + li $t9 1 + subu $t1 $t9 $s1 + beqz $t1 while3_end + bnez $t0 null18 + la $a0 _str0 + j _error +null18: + lw $t1 0($t0) + lw $t1 4($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s0 null19 + la $a0 _str0 + j _error +null19: + lw $t1 0($s0) + lw $t1 32($t1) + move $a0 $s0 + jalr $t1 + move $s0 $v0 + bnez $s0 null20 + la $a0 _str0 + j _error +null20: + lw $t1 0($s0) + lw $t1 24($t1) + move $a0 $s0 + jalr $t1 + move $s1 $v0 + bnez $s0 null21 + la $a0 _str0 + j _error +null21: + lw $t1 0($s0) + lw $t1 28($t1) + move $a0 $s0 + jalr $t1 + move $t0 $v0 + j while3_top +while3_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +LL.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + li $a0 16 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_List + sw $t9 0($t0) + move $s0 $t0 + bnez $s0 null22 + la $a0 _str0 + j _error +null22: + lw $t0 0($s0) + lw $t0 0($t0) + move $a0 $s0 + jalr $t0 + move $s0 $s0 + bnez $s0 null23 + la $a0 _str0 + j _error +null23: + lw $t0 0($s0) + lw $t0 0($t0) + move $a0 $s0 + jalr $t0 + bnez $s0 null24 + la $a0 _str0 + j _error +null24: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + jalr $t0 + li $a0 16 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Element + sw $t9 0($t0) + move $s1 $t0 + bnez $s1 null25 + la $a0 _str0 + j _error +null25: + lw $t0 0($s1) + lw $t0 0($t0) + move $a0 $s1 + li $a1 25 + li $a2 37000 + li $a3 0 + jalr $t0 + bnez $s0 null26 + la $a0 _str0 + j _error +null26: + lw $t0 0($s0) + lw $t0 8($t0) + move $a0 $s0 + move $a1 $s1 + jalr $t0 + move $s0 $v0 + bnez $s0 null27 + la $a0 _str0 + j _error +null27: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + jalr $t0 + li $a0 10000000 + jal _print + li $a0 16 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Element + sw $t9 0($t0) + move $s1 $t0 + bnez $s1 null28 + la $a0 _str0 + j _error +null28: + lw $t0 0($s1) + lw $t0 0($t0) + move $a0 $s1 + li $a1 39 + li $a2 42000 + li $a3 1 + jalr $t0 + move $s2 $s1 + bnez $s0 null29 + la $a0 _str0 + j _error +null29: + lw $t0 0($s0) + lw $t0 8($t0) + move $a0 $s0 + move $a1 $s1 + jalr $t0 + move $s0 $v0 + bnez $s0 null30 + la $a0 _str0 + j _error +null30: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + jalr $t0 + li $a0 10000000 + jal _print + li $a0 16 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Element + sw $t9 0($t0) + move $s1 $t0 + bnez $s1 null31 + la $a0 _str0 + j _error +null31: + lw $t0 0($s1) + lw $t0 0($t0) + move $a0 $s1 + li $a1 22 + li $a2 34000 + li $a3 0 + jalr $t0 + bnez $s0 null32 + la $a0 _str0 + j _error +null32: + lw $t0 0($s0) + lw $t0 8($t0) + move $a0 $s0 + move $a1 $s1 + jalr $t0 + move $s0 $v0 + bnez $s0 null33 + la $a0 _str0 + j _error +null33: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + jalr $t0 + li $a0 16 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Element + sw $t9 0($t0) + move $s3 $t0 + bnez $s3 null34 + la $a0 _str0 + j _error +null34: + lw $t0 0($s3) + lw $t0 0($t0) + move $a0 $s3 + li $a1 27 + li $a2 34000 + li $a3 0 + jalr $t0 + bnez $s0 null35 + la $a0 _str0 + j _error +null35: + lw $t0 0($s0) + lw $t0 20($t0) + move $a0 $s0 + move $a1 $s2 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null36 + la $a0 _str0 + j _error +null36: + lw $t0 0($s0) + lw $t0 20($t0) + move $a0 $s0 + move $a1 $s3 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + li $a0 10000000 + jal _print + li $a0 16 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Element + sw $t9 0($t0) + move $s1 $t0 + bnez $s1 null37 + la $a0 _str0 + j _error +null37: + lw $t0 0($s1) + lw $t0 0($t0) + move $a0 $s1 + li $a1 28 + li $a2 35000 + li $a3 0 + jalr $t0 + bnez $s0 null38 + la $a0 _str0 + j _error +null38: + lw $t0 0($s0) + lw $t0 8($t0) + move $a0 $s0 + move $a1 $s1 + jalr $t0 + move $s0 $v0 + bnez $s0 null39 + la $a0 _str0 + j _error +null39: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + jalr $t0 + li $a0 2220000 + jal _print + bnez $s0 null40 + la $a0 _str0 + j _error +null40: + lw $t0 0($s0) + lw $t0 16($t0) + move $a0 $s0 + move $a1 $s2 + jalr $t0 + move $s0 $v0 + bnez $s0 null41 + la $a0 _str0 + j _error +null41: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + jalr $t0 + li $a0 33300000 + jal _print + bnez $s0 null42 + la $a0 _str0 + j _error +null42: + lw $t0 0($s0) + lw $t0 16($t0) + move $a0 $s0 + move $a1 $s1 + jalr $t0 + move $s0 $v0 + bnez $s0 null43 + la $a0 _str0 + j _error +null43: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + jalr $t0 + li $a0 44440000 + jal _print + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/base/MoreThan4.opt.s b/base/MoreThan4.opt.s new file mode 100644 index 0000000..70e3173 --- /dev/null +++ b/base/MoreThan4.opt.s @@ -0,0 +1,113 @@ +.data + +empty_MT4: + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + la $a0 empty_MT4 + li $a1 1 + li $a2 2 + li $a3 3 + li $t9 4 + sw $t9 0($sp) + li $t9 5 + sw $t9 4($sp) + li $t9 6 + sw $t9 8($sp) + jal MT4.Start + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +MT4.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + move $t2 $a2 + move $t3 $a3 + lw $t4 0($fp) + lw $t5 4($fp) + lw $t6 8($fp) + move $a0 $t1 + jal _print + move $a0 $t2 + jal _print + move $a0 $t3 + jal _print + move $a0 $t4 + jal _print + move $a0 $t5 + jal _print + move $a0 $t6 + jal _print + move $a0 $t0 + move $a1 $t6 + move $a2 $t5 + move $a3 $t4 + sw $t3 0($sp) + sw $t2 4($sp) + sw $t1 8($sp) + jal MT4.Change + move $t6 $v0 + move $v0 $t6 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +MT4.Change: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + move $t2 $a3 + lw $t3 0($fp) + lw $t4 4($fp) + lw $t5 8($fp) + move $a0 $t0 + jal _print + move $a0 $t1 + jal _print + move $a0 $t2 + jal _print + move $a0 $t3 + jal _print + move $a0 $t4 + jal _print + move $a0 $t5 + jal _print + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" diff --git a/base/MoreThan4.s b/base/MoreThan4.s new file mode 100644 index 0000000..d04c1f5 --- /dev/null +++ b/base/MoreThan4.s @@ -0,0 +1,140 @@ +.data + +vmt_MT4: + MT4.Start + MT4.Change + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + li $a0 4 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_MT4 + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + li $a1 1 + li $a2 2 + li $a3 3 + li $t9 4 + sw $t9 0($sp) + li $t9 5 + sw $t9 4($sp) + li $t9 6 + sw $t9 8($sp) + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +MT4.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + move $t2 $a2 + move $t3 $a3 + lw $t4 0($fp) + lw $t5 4($fp) + lw $t6 8($fp) + move $a0 $t1 + jal _print + move $a0 $t2 + jal _print + move $a0 $t3 + jal _print + move $a0 $t4 + jal _print + move $a0 $t5 + jal _print + move $a0 $t6 + jal _print + lw $t7 0($t0) + lw $t7 4($t7) + move $a0 $t0 + move $a1 $t6 + move $a2 $t5 + move $a3 $t4 + sw $t3 0($sp) + sw $t2 4($sp) + sw $t1 8($sp) + jalr $t7 + move $t7 $v0 + move $v0 $t7 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +MT4.Change: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + move $t2 $a3 + lw $t3 0($fp) + lw $t4 4($fp) + lw $t5 8($fp) + move $a0 $t0 + jal _print + move $a0 $t1 + jal _print + move $a0 $t2 + jal _print + move $a0 $t3 + jal _print + move $a0 $t4 + jal _print + move $a0 $t5 + jal _print + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/base/QuickSort.opt.s b/base/QuickSort.opt.s new file mode 100644 index 0000000..69f7bda --- /dev/null +++ b/base/QuickSort.opt.s @@ -0,0 +1,566 @@ +.data + +empty_QS: + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 8 + jal _heapAlloc + move $t0 $v0 + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + move $a0 $t0 + li $a1 10 + jal QS.Start + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +QS.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + move $a0 $s0 + move $a1 $t0 + jal QS.Init + move $a0 $s0 + jal QS.Print + li $a0 9999 + jal _print + lw $t0 4($s0) + subu $t0 $t0 1 + move $a0 $s0 + li $a1 0 + move $a2 $t0 + jal QS.Sort + move $a0 $s0 + jal QS.Print + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +QS.Sort: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $t0 $a1 + move $s1 $a2 + li $t1 0 + slt $t2 $t0 $s1 + beqz $t2 if1_else + lw $t2 0($s0) + bnez $t2 null2 + la $a0 _str0 + j _error +null2: + lw $t3 0($t2) + sltu $t3 $s1 $t3 + bnez $t3 bounds1 + la $a0 _str1 + j _error +bounds1: + mul $t3 $s1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + subu $s2 $t0 1 + move $t2 $s1 + li $t4 1 +while1_top: + beqz $t4 while1_end + li $t5 1 +while2_top: + beqz $t5 while2_end + addu $s2 $s2 1 + lw $t6 0($s0) + bnez $t6 null3 + la $a0 _str0 + j _error +null3: + lw $t7 0($t6) + sltu $t7 $s2 $t7 + bnez $t7 bounds2 + la $a0 _str1 + j _error +bounds2: + mul $t7 $s2 4 + addu $t7 $t7 $t6 + lw $t7 4($t7) + slt $t6 $t7 $t3 + bnez $t6 if2_else + li $t5 0 + j if2_end +if2_else: + li $t5 1 +if2_end: + j while2_top +while2_end: + li $t5 1 +while3_top: + beqz $t5 while3_end + subu $t2 $t2 1 + lw $t6 0($s0) + bnez $t6 null4 + la $a0 _str0 + j _error +null4: + lw $t8 0($t6) + sltu $t8 $t2 $t8 + bnez $t8 bounds3 + la $a0 _str1 + j _error +bounds3: + mul $t8 $t2 4 + addu $t8 $t8 $t6 + lw $t7 4($t8) + slt $t7 $t3 $t7 + bnez $t7 if3_else + li $t5 0 + j if3_end +if3_else: + li $t5 1 +if3_end: + j while3_top +while3_end: + lw $t5 0($s0) + bnez $t5 null5 + la $a0 _str0 + j _error +null5: + lw $t7 0($t5) + sltu $t7 $s2 $t7 + bnez $t7 bounds4 + la $a0 _str1 + j _error +bounds4: + mul $t7 $s2 4 + addu $t7 $t7 $t5 + lw $t1 4($t7) + lw $t7 0($s0) + bnez $t7 null6 + la $a0 _str0 + j _error +null6: + lw $t5 0($t7) + sltu $t5 $s2 $t5 + bnez $t5 bounds5 + la $a0 _str1 + j _error +bounds5: + mul $t5 $s2 4 + addu $t5 $t5 $t7 + lw $t7 0($s0) + bnez $t7 null7 + la $a0 _str0 + j _error +null7: + lw $t8 0($t7) + sltu $t8 $t2 $t8 + bnez $t8 bounds6 + la $a0 _str1 + j _error +bounds6: + mul $t8 $t2 4 + addu $t8 $t8 $t7 + lw $t8 4($t8) + sw $t8 4($t5) + lw $t8 0($s0) + bnez $t8 null8 + la $a0 _str0 + j _error +null8: + lw $t5 0($t8) + sltu $t5 $t2 $t5 + bnez $t5 bounds7 + la $a0 _str1 + j _error +bounds7: + mul $t5 $t2 4 + addu $t5 $t5 $t8 + sw $t1 4($t5) + addu $t5 $s2 1 + slt $t5 $t2 $t5 + beqz $t5 if4_else + li $t4 0 + j if4_end +if4_else: + li $t4 1 +if4_end: + j while1_top +while1_end: + lw $t4 0($s0) + bnez $t4 null9 + la $a0 _str0 + j _error +null9: + lw $t3 0($t4) + sltu $t3 $t2 $t3 + bnez $t3 bounds8 + la $a0 _str1 + j _error +bounds8: + mul $t3 $t2 4 + addu $t3 $t3 $t4 + lw $t4 0($s0) + bnez $t4 null10 + la $a0 _str0 + j _error +null10: + lw $t2 0($t4) + sltu $t2 $s2 $t2 + bnez $t2 bounds9 + la $a0 _str1 + j _error +bounds9: + mul $t2 $s2 4 + addu $t2 $t2 $t4 + lw $t2 4($t2) + sw $t2 4($t3) + lw $t2 0($s0) + bnez $t2 null11 + la $a0 _str0 + j _error +null11: + lw $t3 0($t2) + sltu $t3 $s2 $t3 + bnez $t3 bounds10 + la $a0 _str1 + j _error +bounds10: + mul $t3 $s2 4 + addu $t3 $t3 $t2 + lw $t2 0($s0) + bnez $t2 null12 + la $a0 _str0 + j _error +null12: + lw $t4 0($t2) + sltu $t4 $s1 $t4 + bnez $t4 bounds11 + la $a0 _str1 + j _error +bounds11: + mul $t4 $s1 4 + addu $t4 $t4 $t2 + lw $t4 4($t4) + sw $t4 4($t3) + lw $t4 0($s0) + bnez $t4 null13 + la $a0 _str0 + j _error +null13: + lw $t3 0($t4) + sltu $t3 $s1 $t3 + bnez $t3 bounds12 + la $a0 _str1 + j _error +bounds12: + mul $t3 $s1 4 + addu $t3 $t3 $t4 + sw $t1 4($t3) + subu $t3 $s2 1 + move $a0 $s0 + move $a1 $t0 + move $a2 $t3 + jal QS.Sort + addu $t3 $s2 1 + move $a0 $s0 + move $a1 $t3 + move $a2 $s1 + jal QS.Sort + j if1_end +if1_else: +if1_end: + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +QS.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t1 0 +while4_top: + lw $t2 4($t0) + slt $t2 $t1 $t2 + beqz $t2 while4_end + lw $t2 0($t0) + bnez $t2 null14 + la $a0 _str0 + j _error +null14: + lw $t3 0($t2) + sltu $t3 $t1 $t3 + bnez $t3 bounds13 + la $a0 _str1 + j _error +bounds13: + mul $t3 $t1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + move $a0 $t3 + jal _print + addu $t1 $t1 1 + j while4_top +while4_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +QS.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + sw $t0 4($s0) + move $a0 $t0 + jal AllocArray + move $t0 $v0 + sw $t0 0($s0) + lw $t0 0($s0) + bnez $t0 null15 + la $a0 _str0 + j _error +null15: + lw $t1 0($t0) + li $t9 0 + sltu $t1 $t9 $t1 + bnez $t1 bounds14 + la $a0 _str1 + j _error +bounds14: + li $t1 0 + addu $t1 $t1 $t0 + li $t9 20 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null16 + la $a0 _str0 + j _error +null16: + lw $t0 0($t1) + li $t9 1 + sltu $t0 $t9 $t0 + bnez $t0 bounds15 + la $a0 _str1 + j _error +bounds15: + li $t0 4 + addu $t0 $t0 $t1 + li $t9 7 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null17 + la $a0 _str0 + j _error +null17: + lw $t1 0($t0) + li $t9 2 + sltu $t1 $t9 $t1 + bnez $t1 bounds16 + la $a0 _str1 + j _error +bounds16: + li $t1 8 + addu $t1 $t1 $t0 + li $t9 12 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null18 + la $a0 _str0 + j _error +null18: + lw $t0 0($t1) + li $t9 3 + sltu $t0 $t9 $t0 + bnez $t0 bounds17 + la $a0 _str1 + j _error +bounds17: + li $t0 12 + addu $t0 $t0 $t1 + li $t9 18 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null19 + la $a0 _str0 + j _error +null19: + lw $t1 0($t0) + li $t9 4 + sltu $t1 $t9 $t1 + bnez $t1 bounds18 + la $a0 _str1 + j _error +bounds18: + li $t1 16 + addu $t1 $t1 $t0 + li $t9 2 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null20 + la $a0 _str0 + j _error +null20: + lw $t0 0($t1) + li $t9 5 + sltu $t0 $t9 $t0 + bnez $t0 bounds19 + la $a0 _str1 + j _error +bounds19: + li $t0 20 + addu $t0 $t0 $t1 + li $t9 11 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null21 + la $a0 _str0 + j _error +null21: + lw $t1 0($t0) + li $t9 6 + sltu $t1 $t9 $t1 + bnez $t1 bounds20 + la $a0 _str1 + j _error +bounds20: + li $t1 24 + addu $t1 $t1 $t0 + li $t9 6 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null22 + la $a0 _str0 + j _error +null22: + lw $t0 0($t1) + li $t9 7 + sltu $t0 $t9 $t0 + bnez $t0 bounds21 + la $a0 _str1 + j _error +bounds21: + li $t0 28 + addu $t0 $t0 $t1 + li $t9 9 + sw $t9 4($t0) + lw $t0 0($s0) + bnez $t0 null23 + la $a0 _str0 + j _error +null23: + lw $t1 0($t0) + li $t9 8 + sltu $t1 $t9 $t1 + bnez $t1 bounds22 + la $a0 _str1 + j _error +bounds22: + li $t1 32 + addu $t1 $t1 $t0 + li $t9 19 + sw $t9 4($t1) + lw $t1 0($s0) + bnez $t1 null24 + la $a0 _str0 + j _error +null24: + lw $t0 0($t1) + li $t9 9 + sltu $t0 $t9 $t0 + bnez $t0 bounds23 + la $a0 _str1 + j _error +bounds23: + li $t0 36 + addu $t0 $t0 $t1 + li $t9 5 + sw $t9 4($t0) + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + mul $t1 $t0 4 + addu $t1 $t1 4 + move $a0 $t1 + jal _heapAlloc + move $t1 $v0 + sw $t0 0($t1) + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" +_str1: .asciiz "array index out of bounds\n" diff --git a/base/QuickSort.s b/base/QuickSort.s new file mode 100644 index 0000000..26dfbcc --- /dev/null +++ b/base/QuickSort.s @@ -0,0 +1,590 @@ +.data + +vmt_QS: + QS.Start + QS.Sort + QS.Print + QS.Init + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 12 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_QS + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + li $a1 10 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +QS.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + lw $t1 0($s0) + lw $t1 12($t1) + move $a0 $s0 + move $a1 $t0 + jalr $t1 + lw $t1 0($s0) + lw $t1 8($t1) + move $a0 $s0 + jalr $t1 + li $a0 9999 + jal _print + lw $t1 8($s0) + subu $t1 $t1 1 + lw $t0 0($s0) + lw $t0 4($t0) + move $a0 $s0 + li $a1 0 + move $a2 $t1 + jalr $t0 + lw $t0 0($s0) + lw $t0 8($t0) + move $a0 $s0 + jalr $t0 + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +QS.Sort: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $t0 $a1 + move $s1 $a2 + li $t1 0 + slt $t2 $t0 $s1 + beqz $t2 if1_else + lw $t2 4($s0) + bnez $t2 null2 + la $a0 _str0 + j _error +null2: + lw $t3 0($t2) + sltu $t3 $s1 $t3 + bnez $t3 bounds1 + la $a0 _str1 + j _error +bounds1: + mul $t3 $s1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + subu $s2 $t0 1 + move $t2 $s1 + li $t4 1 +while1_top: + beqz $t4 while1_end + li $t5 1 +while2_top: + beqz $t5 while2_end + addu $s2 $s2 1 + lw $t6 4($s0) + bnez $t6 null3 + la $a0 _str0 + j _error +null3: + lw $t7 0($t6) + sltu $t7 $s2 $t7 + bnez $t7 bounds2 + la $a0 _str1 + j _error +bounds2: + mul $t7 $s2 4 + addu $t7 $t7 $t6 + lw $t7 4($t7) + slt $t6 $t7 $t3 + li $t9 1 + subu $t6 $t9 $t6 + beqz $t6 if2_else + li $t5 0 + j if2_end +if2_else: + li $t5 1 +if2_end: + j while2_top +while2_end: + li $t5 1 +while3_top: + beqz $t5 while3_end + subu $t2 $t2 1 + lw $t6 4($s0) + bnez $t6 null4 + la $a0 _str0 + j _error +null4: + lw $t8 0($t6) + sltu $t8 $t2 $t8 + bnez $t8 bounds3 + la $a0 _str1 + j _error +bounds3: + mul $t8 $t2 4 + addu $t8 $t8 $t6 + lw $t7 4($t8) + slt $t7 $t3 $t7 + li $t9 1 + subu $t7 $t9 $t7 + beqz $t7 if3_else + li $t5 0 + j if3_end +if3_else: + li $t5 1 +if3_end: + j while3_top +while3_end: + lw $t5 4($s0) + bnez $t5 null5 + la $a0 _str0 + j _error +null5: + lw $t7 0($t5) + sltu $t7 $s2 $t7 + bnez $t7 bounds4 + la $a0 _str1 + j _error +bounds4: + mul $t7 $s2 4 + addu $t7 $t7 $t5 + lw $t1 4($t7) + lw $t7 4($s0) + bnez $t7 null6 + la $a0 _str0 + j _error +null6: + lw $t5 0($t7) + sltu $t5 $s2 $t5 + bnez $t5 bounds5 + la $a0 _str1 + j _error +bounds5: + mul $t5 $s2 4 + addu $t5 $t5 $t7 + lw $t7 4($s0) + bnez $t7 null7 + la $a0 _str0 + j _error +null7: + lw $t8 0($t7) + sltu $t8 $t2 $t8 + bnez $t8 bounds6 + la $a0 _str1 + j _error +bounds6: + mul $t8 $t2 4 + addu $t8 $t8 $t7 + lw $t8 4($t8) + sw $t8 4($t5) + lw $t8 4($s0) + bnez $t8 null8 + la $a0 _str0 + j _error +null8: + lw $t5 0($t8) + sltu $t5 $t2 $t5 + bnez $t5 bounds7 + la $a0 _str1 + j _error +bounds7: + mul $t5 $t2 4 + addu $t5 $t5 $t8 + sw $t1 4($t5) + addu $t5 $s2 1 + slt $t5 $t2 $t5 + beqz $t5 if4_else + li $t4 0 + j if4_end +if4_else: + li $t4 1 +if4_end: + j while1_top +while1_end: + lw $t4 4($s0) + bnez $t4 null9 + la $a0 _str0 + j _error +null9: + lw $t3 0($t4) + sltu $t3 $t2 $t3 + bnez $t3 bounds8 + la $a0 _str1 + j _error +bounds8: + mul $t3 $t2 4 + addu $t3 $t3 $t4 + lw $t4 4($s0) + bnez $t4 null10 + la $a0 _str0 + j _error +null10: + lw $t2 0($t4) + sltu $t2 $s2 $t2 + bnez $t2 bounds9 + la $a0 _str1 + j _error +bounds9: + mul $t2 $s2 4 + addu $t2 $t2 $t4 + lw $t2 4($t2) + sw $t2 4($t3) + lw $t2 4($s0) + bnez $t2 null11 + la $a0 _str0 + j _error +null11: + lw $t3 0($t2) + sltu $t3 $s2 $t3 + bnez $t3 bounds10 + la $a0 _str1 + j _error +bounds10: + mul $t3 $s2 4 + addu $t3 $t3 $t2 + lw $t2 4($s0) + bnez $t2 null12 + la $a0 _str0 + j _error +null12: + lw $t4 0($t2) + sltu $t4 $s1 $t4 + bnez $t4 bounds11 + la $a0 _str1 + j _error +bounds11: + mul $t4 $s1 4 + addu $t4 $t4 $t2 + lw $t4 4($t4) + sw $t4 4($t3) + lw $t4 4($s0) + bnez $t4 null13 + la $a0 _str0 + j _error +null13: + lw $t3 0($t4) + sltu $t3 $s1 $t3 + bnez $t3 bounds12 + la $a0 _str1 + j _error +bounds12: + mul $t3 $s1 4 + addu $t3 $t3 $t4 + sw $t1 4($t3) + lw $t3 0($s0) + lw $t3 4($t3) + subu $t1 $s2 1 + move $a0 $s0 + move $a1 $t0 + move $a2 $t1 + jalr $t3 + lw $t1 0($s0) + lw $t1 4($t1) + addu $t3 $s2 1 + move $a0 $s0 + move $a1 $t3 + move $a2 $s1 + jalr $t1 + j if1_end +if1_else: +if1_end: + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +QS.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + li $t1 0 +while4_top: + lw $t2 8($t0) + slt $t2 $t1 $t2 + beqz $t2 while4_end + lw $t2 4($t0) + bnez $t2 null14 + la $a0 _str0 + j _error +null14: + lw $t3 0($t2) + sltu $t3 $t1 $t3 + bnez $t3 bounds13 + la $a0 _str1 + j _error +bounds13: + mul $t3 $t1 4 + addu $t3 $t3 $t2 + lw $t3 4($t3) + move $a0 $t3 + jal _print + addu $t1 $t1 1 + j while4_top +while4_end: + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +QS.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + move $s0 $a0 + move $t0 $a1 + sw $t0 8($s0) + move $a0 $t0 + jal AllocArray + move $t0 $v0 + sw $t0 4($s0) + lw $t0 4($s0) + bnez $t0 null15 + la $a0 _str0 + j _error +null15: + lw $t1 0($t0) + li $t9 0 + sltu $t1 $t9 $t1 + bnez $t1 bounds14 + la $a0 _str1 + j _error +bounds14: + li $t1 0 + addu $t1 $t1 $t0 + li $t9 20 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null16 + la $a0 _str0 + j _error +null16: + lw $t0 0($t1) + li $t9 1 + sltu $t0 $t9 $t0 + bnez $t0 bounds15 + la $a0 _str1 + j _error +bounds15: + li $t0 4 + addu $t0 $t0 $t1 + li $t9 7 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null17 + la $a0 _str0 + j _error +null17: + lw $t1 0($t0) + li $t9 2 + sltu $t1 $t9 $t1 + bnez $t1 bounds16 + la $a0 _str1 + j _error +bounds16: + li $t1 8 + addu $t1 $t1 $t0 + li $t9 12 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null18 + la $a0 _str0 + j _error +null18: + lw $t0 0($t1) + li $t9 3 + sltu $t0 $t9 $t0 + bnez $t0 bounds17 + la $a0 _str1 + j _error +bounds17: + li $t0 12 + addu $t0 $t0 $t1 + li $t9 18 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null19 + la $a0 _str0 + j _error +null19: + lw $t1 0($t0) + li $t9 4 + sltu $t1 $t9 $t1 + bnez $t1 bounds18 + la $a0 _str1 + j _error +bounds18: + li $t1 16 + addu $t1 $t1 $t0 + li $t9 2 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null20 + la $a0 _str0 + j _error +null20: + lw $t0 0($t1) + li $t9 5 + sltu $t0 $t9 $t0 + bnez $t0 bounds19 + la $a0 _str1 + j _error +bounds19: + li $t0 20 + addu $t0 $t0 $t1 + li $t9 11 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null21 + la $a0 _str0 + j _error +null21: + lw $t1 0($t0) + li $t9 6 + sltu $t1 $t9 $t1 + bnez $t1 bounds20 + la $a0 _str1 + j _error +bounds20: + li $t1 24 + addu $t1 $t1 $t0 + li $t9 6 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null22 + la $a0 _str0 + j _error +null22: + lw $t0 0($t1) + li $t9 7 + sltu $t0 $t9 $t0 + bnez $t0 bounds21 + la $a0 _str1 + j _error +bounds21: + li $t0 28 + addu $t0 $t0 $t1 + li $t9 9 + sw $t9 4($t0) + lw $t0 4($s0) + bnez $t0 null23 + la $a0 _str0 + j _error +null23: + lw $t1 0($t0) + li $t9 8 + sltu $t1 $t9 $t1 + bnez $t1 bounds22 + la $a0 _str1 + j _error +bounds22: + li $t1 32 + addu $t1 $t1 $t0 + li $t9 19 + sw $t9 4($t1) + lw $t1 4($s0) + bnez $t1 null24 + la $a0 _str0 + j _error +null24: + lw $t0 0($t1) + li $t9 9 + sltu $t0 $t9 $t0 + bnez $t0 bounds23 + la $a0 _str1 + j _error +bounds23: + li $t0 36 + addu $t0 $t0 $t1 + li $t9 5 + sw $t9 4($t0) + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + mul $t1 $t0 4 + addu $t1 $t1 4 + move $a0 $t1 + jal _heapAlloc + move $t1 $v0 + sw $t0 0($t1) + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" +_str1: .asciiz "array index out of bounds\n" diff --git a/base/TreeVisitor.opt.s b/base/TreeVisitor.opt.s new file mode 100644 index 0000000..df5024b --- /dev/null +++ b/base/TreeVisitor.opt.s @@ -0,0 +1,1258 @@ +.data + +empty_TV: + +empty_Tree: + +vmt_Visitor: + Visitor.visit + +vmt_MyVisitor: + MyVisitor.visit + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + la $a0 empty_TV + jal TV.Start + move $t0 $v0 + move $a0 $t0 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +TV.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + li $a0 24 + jal _heapAlloc + move $s0 $v0 + bnez $s0 null1 + la $a0 _str0 + j _error +null1: + move $a0 $s0 + li $a1 16 + jal Tree.Init + bnez $s0 null2 + la $a0 _str0 + j _error +null2: + move $a0 $s0 + jal Tree.Print + li $a0 100000000 + jal _print + bnez $s0 null3 + la $a0 _str0 + j _error +null3: + move $a0 $s0 + li $a1 8 + jal Tree.Insert + bnez $s0 null4 + la $a0 _str0 + j _error +null4: + move $a0 $s0 + li $a1 24 + jal Tree.Insert + bnez $s0 null5 + la $a0 _str0 + j _error +null5: + move $a0 $s0 + li $a1 4 + jal Tree.Insert + bnez $s0 null6 + la $a0 _str0 + j _error +null6: + move $a0 $s0 + li $a1 12 + jal Tree.Insert + bnez $s0 null7 + la $a0 _str0 + j _error +null7: + move $a0 $s0 + li $a1 20 + jal Tree.Insert + bnez $s0 null8 + la $a0 _str0 + j _error +null8: + move $a0 $s0 + li $a1 28 + jal Tree.Insert + bnez $s0 null9 + la $a0 _str0 + j _error +null9: + move $a0 $s0 + li $a1 14 + jal Tree.Insert + bnez $s0 null10 + la $a0 _str0 + j _error +null10: + move $a0 $s0 + jal Tree.Print + li $a0 100000000 + jal _print + li $a0 12 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_MyVisitor + sw $t9 0($t0) + move $t0 $t0 + li $a0 50000000 + jal _print + bnez $s0 null11 + la $a0 _str0 + j _error +null11: + move $a0 $s0 + move $a1 $t0 + jal Tree.accept + li $a0 100000000 + jal _print + bnez $s0 null12 + la $a0 _str0 + j _error +null12: + move $a0 $s0 + li $a1 24 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null13 + la $a0 _str0 + j _error +null13: + move $a0 $s0 + li $a1 12 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null14 + la $a0 _str0 + j _error +null14: + move $a0 $s0 + li $a1 16 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null15 + la $a0 _str0 + j _error +null15: + move $a0 $s0 + li $a1 50 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null16 + la $a0 _str0 + j _error +null16: + move $a0 $s0 + li $a1 12 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s0 null17 + la $a0 _str0 + j _error +null17: + move $a0 $s0 + li $a1 12 + jal Tree.Delete + bnez $s0 null18 + la $a0 _str0 + j _error +null18: + move $a0 $s0 + jal Tree.Print + bnez $s0 null19 + la $a0 _str0 + j _error +null19: + move $a0 $s0 + li $a1 12 + jal Tree.Search + move $t0 $v0 + move $a0 $t0 + jal _print + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +Tree.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 8($t0) + sw $0 12($t0) + sw $0 16($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 4($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 0($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 0($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 16($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 12($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 12($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 16($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + addu $t2 $t1 1 + slt $t1 $t0 $t1 + beqz $t1 if1_else + li $t1 0 + j if1_end +if1_else: + slt $t2 $t0 $t2 + bnez $t2 if2_else + li $t1 0 + j if2_end +if2_else: + li $t1 1 +if2_end: +if1_end: + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + li $a0 24 + jal _heapAlloc + move $s2 $v0 + bnez $s2 null20 + la $a0 _str0 + j _error +null20: + move $a0 $s2 + move $a1 $s1 + jal Tree.Init + move $s0 $s0 + li $s3 1 +while1_top: + beqz $s3 while1_end + bnez $s0 null21 + la $a0 _str0 + j _error +null21: + move $a0 $s0 + jal Tree.GetKey + move $t0 $v0 + slt $t0 $s1 $t0 + beqz $t0 if3_else + bnez $s0 null22 + la $a0 _str0 + j _error +null22: + move $a0 $s0 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if4_else + bnez $s0 null23 + la $a0 _str0 + j _error +null23: + move $a0 $s0 + jal Tree.GetLeft + move $s0 $v0 + j if4_end +if4_else: + li $s3 0 + bnez $s0 null24 + la $a0 _str0 + j _error +null24: + move $a0 $s0 + li $a1 1 + jal Tree.SetHas_Left + bnez $s0 null25 + la $a0 _str0 + j _error +null25: + move $a0 $s0 + move $a1 $s2 + jal Tree.SetLeft +if4_end: + j if3_end +if3_else: + bnez $s0 null26 + la $a0 _str0 + j _error +null26: + move $a0 $s0 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if5_else + bnez $s0 null27 + la $a0 _str0 + j _error +null27: + move $a0 $s0 + jal Tree.GetRight + move $s0 $v0 + j if5_end +if5_else: + li $s3 0 + bnez $s0 null28 + la $a0 _str0 + j _error +null28: + move $a0 $s0 + li $a1 1 + jal Tree.SetHas_Right + bnez $s0 null29 + la $a0 _str0 + j _error +null29: + move $a0 $s0 + move $a1 $s2 + jal Tree.SetRight +if5_end: +if3_end: + j while1_top +while1_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 36 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + sw $s4 16($sp) + sw $s5 20($sp) + sw $s6 24($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $s0 + move $s3 $s0 + li $s4 1 + li $s5 0 + li $s6 1 +while2_top: + beqz $s4 while2_end + bnez $s2 null30 + la $a0 _str0 + j _error +null30: + move $a0 $s2 + jal Tree.GetKey + move $t0 $v0 + slt $t1 $s1 $t0 + beqz $t1 if6_else + bnez $s2 null31 + la $a0 _str0 + j _error +null31: + move $a0 $s2 + jal Tree.GetHas_Left + move $t1 $v0 + beqz $t1 if7_else + move $s3 $s2 + bnez $s2 null32 + la $a0 _str0 + j _error +null32: + move $a0 $s2 + jal Tree.GetLeft + move $s2 $v0 + j if7_end +if7_else: + li $s4 0 +if7_end: + j if6_end +if6_else: + slt $t0 $t0 $s1 + beqz $t0 if8_else + bnez $s2 null33 + la $a0 _str0 + j _error +null33: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if9_else + move $s3 $s2 + bnez $s2 null34 + la $a0 _str0 + j _error +null34: + move $a0 $s2 + jal Tree.GetRight + move $s2 $v0 + j if9_end +if9_else: + li $s4 0 +if9_end: + j if8_end +if8_else: + beqz $s6 if10_else + bnez $s2 null35 + la $a0 _str0 + j _error +null35: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + bnez $t0 if11_else + bnez $s2 null36 + la $a0 _str0 + j _error +null36: + move $a0 $s2 + jal Tree.GetHas_Left + move $t0 $v0 + bnez $t0 if11_else + j if11_end +if11_else: + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jal Tree.Remove +if11_end: + j if10_end +if10_else: + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jal Tree.Remove +if10_end: + li $s5 1 + li $s4 0 +if8_end: +if6_end: + li $s6 0 + j while2_top +while2_end: + move $v0 $s5 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $s4 16($sp) + lw $s5 20($sp) + lw $s6 24($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 36 + jr $ra + +Tree.Remove: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 + bnez $s2 null37 + la $a0 _str0 + j _error +null37: + move $a0 $s2 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if12_else + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jal Tree.RemoveLeft + j if12_end +if12_else: + bnez $s2 null38 + la $a0 _str0 + j _error +null38: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if13_else + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jal Tree.RemoveRight + j if13_end +if13_else: + bnez $s2 null39 + la $a0 _str0 + j _error +null39: + move $a0 $s2 + jal Tree.GetKey + move $s2 $v0 + bnez $s1 null40 + la $a0 _str0 + j _error +null40: + move $a0 $s1 + jal Tree.GetLeft + move $t0 $v0 + bnez $t0 null41 + la $a0 _str0 + j _error +null41: + move $a0 $t0 + jal Tree.GetKey + move $t0 $v0 + move $a0 $s0 + move $a1 $s2 + move $a2 $t0 + jal Tree.Compare + move $t0 $v0 + beqz $t0 if14_else + bnez $s1 null42 + la $a0 _str0 + j _error +null42: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetLeft + bnez $s1 null43 + la $a0 _str0 + j _error +null43: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Left + j if14_end +if14_else: + bnez $s1 null44 + la $a0 _str0 + j _error +null44: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetRight + bnez $s1 null45 + la $a0 _str0 + j _error +null45: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Right +if14_end: +if13_end: +if12_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.RemoveRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while3_top: + bnez $s2 null46 + la $a0 _str0 + j _error +null46: + move $a0 $s2 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 while3_end + bnez $s2 null47 + la $a0 _str0 + j _error +null47: + bnez $s2 null48 + la $a0 _str0 + j _error +null48: + move $a0 $s2 + jal Tree.GetRight + move $t0 $v0 + bnez $t0 null49 + la $a0 _str0 + j _error +null49: + move $a0 $t0 + jal Tree.GetKey + move $t0 $v0 + move $a0 $s2 + move $a1 $t0 + jal Tree.SetKey + move $s1 $s2 + bnez $s2 null50 + la $a0 _str0 + j _error +null50: + move $a0 $s2 + jal Tree.GetRight + move $s2 $v0 + j while3_top +while3_end: + bnez $s1 null51 + la $a0 _str0 + j _error +null51: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetRight + bnez $s1 null52 + la $a0 _str0 + j _error +null52: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Right + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.RemoveLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while4_top: + bnez $s2 null53 + la $a0 _str0 + j _error +null53: + move $a0 $s2 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 while4_end + bnez $s2 null54 + la $a0 _str0 + j _error +null54: + bnez $s2 null55 + la $a0 _str0 + j _error +null55: + move $a0 $s2 + jal Tree.GetLeft + move $t0 $v0 + bnez $t0 null56 + la $a0 _str0 + j _error +null56: + move $a0 $t0 + jal Tree.GetKey + move $t0 $v0 + move $a0 $s2 + move $a1 $t0 + jal Tree.SetKey + move $s1 $s2 + bnez $s2 null57 + la $a0 _str0 + j _error +null57: + move $a0 $s2 + jal Tree.GetLeft + move $s2 $v0 + j while4_top +while4_end: + bnez $s1 null58 + la $a0 _str0 + j _error +null58: + lw $t0 20($s0) + move $a0 $s1 + move $a1 $t0 + jal Tree.SetLeft + bnez $s1 null59 + la $a0 _str0 + j _error +null59: + move $a0 $s1 + li $a1 0 + jal Tree.SetHas_Left + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $t0 $a0 + move $s0 $a1 + move $s1 $t0 + li $s2 1 + li $s3 0 +while5_top: + beqz $s2 while5_end + bnez $s1 null60 + la $a0 _str0 + j _error +null60: + move $a0 $s1 + jal Tree.GetKey + move $t0 $v0 + slt $t1 $s0 $t0 + beqz $t1 if15_else + bnez $s1 null61 + la $a0 _str0 + j _error +null61: + move $a0 $s1 + jal Tree.GetHas_Left + move $t1 $v0 + beqz $t1 if16_else + bnez $s1 null62 + la $a0 _str0 + j _error +null62: + move $a0 $s1 + jal Tree.GetLeft + move $s1 $v0 + j if16_end +if16_else: + li $s2 0 +if16_end: + j if15_end +if15_else: + slt $t0 $t0 $s0 + beqz $t0 if17_else + bnez $s1 null63 + la $a0 _str0 + j _error +null63: + move $a0 $s1 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if18_else + bnez $s1 null64 + la $a0 _str0 + j _error +null64: + move $a0 $s1 + jal Tree.GetRight + move $s1 $v0 + j if18_end +if18_else: + li $s2 0 +if18_end: + j if17_end +if17_else: + li $s3 1 + li $s2 0 +if17_end: +if15_end: + j while5_top +while5_end: + move $v0 $s3 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $t0 + move $a0 $t0 + move $a1 $t1 + jal Tree.RecPrint + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.RecPrint: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null65 + la $a0 _str0 + j _error +null65: + move $a0 $s1 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if19_else + bnez $s1 null66 + la $a0 _str0 + j _error +null66: + move $a0 $s1 + jal Tree.GetLeft + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jal Tree.RecPrint + j if19_end +if19_else: +if19_end: + bnez $s1 null67 + la $a0 _str0 + j _error +null67: + move $a0 $s1 + jal Tree.GetKey + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s1 null68 + la $a0 _str0 + j _error +null68: + move $a0 $s1 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if20_else + bnez $s1 null69 + la $a0 _str0 + j _error +null69: + move $a0 $s1 + jal Tree.GetRight + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jal Tree.RecPrint + j if20_end +if20_else: +if20_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +Tree.accept: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + li $a0 333 + jal _print + bnez $t1 null70 + la $a0 _str0 + j _error +null70: + lw $t2 0($t1) + lw $t2 0($t2) + move $a0 $t1 + move $a1 $t0 + jalr $t2 + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Visitor.visit: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null71 + la $a0 _str0 + j _error +null71: + move $a0 $s1 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if21_else + bnez $s1 null72 + la $a0 _str0 + j _error +null72: + move $a0 $s1 + jal Tree.GetRight + move $t0 $v0 + sw $t0 8($s0) + lw $t0 8($s0) + bnez $t0 null73 + la $a0 _str0 + j _error +null73: + move $a0 $t0 + move $a1 $s0 + jal Tree.accept + j if21_end +if21_else: +if21_end: + bnez $s1 null74 + la $a0 _str0 + j _error +null74: + move $a0 $s1 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if22_else + bnez $s1 null75 + la $a0 _str0 + j _error +null75: + move $a0 $s1 + jal Tree.GetLeft + move $t0 $v0 + sw $t0 4($s0) + lw $t0 4($s0) + bnez $t0 null76 + la $a0 _str0 + j _error +null76: + move $a0 $t0 + move $a1 $s0 + jal Tree.accept + j if22_end +if22_else: +if22_end: + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +MyVisitor.visit: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null77 + la $a0 _str0 + j _error +null77: + move $a0 $s1 + jal Tree.GetHas_Right + move $t0 $v0 + beqz $t0 if23_else + bnez $s1 null78 + la $a0 _str0 + j _error +null78: + move $a0 $s1 + jal Tree.GetRight + move $t0 $v0 + sw $t0 8($s0) + lw $t0 8($s0) + bnez $t0 null79 + la $a0 _str0 + j _error +null79: + move $a0 $t0 + move $a1 $s0 + jal Tree.accept + j if23_end +if23_else: +if23_end: + bnez $s1 null80 + la $a0 _str0 + j _error +null80: + move $a0 $s1 + jal Tree.GetKey + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s1 null81 + la $a0 _str0 + j _error +null81: + move $a0 $s1 + jal Tree.GetHas_Left + move $t0 $v0 + beqz $t0 if24_else + bnez $s1 null82 + la $a0 _str0 + j _error +null82: + move $a0 $s1 + jal Tree.GetLeft + move $t0 $v0 + sw $t0 4($s0) + lw $t0 4($s0) + bnez $t0 null83 + la $a0 _str0 + j _error +null83: + move $a0 $t0 + move $a1 $s0 + jal Tree.accept + j if24_end +if24_else: +if24_end: + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/base/TreeVisitor.s b/base/TreeVisitor.s new file mode 100644 index 0000000..9ef1916 --- /dev/null +++ b/base/TreeVisitor.s @@ -0,0 +1,1493 @@ +.data + +vmt_TV: + TV.Start + +vmt_Tree: + Tree.Init + Tree.SetRight + Tree.SetLeft + Tree.GetRight + Tree.GetLeft + Tree.GetKey + Tree.SetKey + Tree.GetHas_Right + Tree.GetHas_Left + Tree.SetHas_Left + Tree.SetHas_Right + Tree.Compare + Tree.Insert + Tree.Delete + Tree.Remove + Tree.RemoveRight + Tree.RemoveLeft + Tree.Search + Tree.Print + Tree.RecPrint + Tree.accept + +vmt_Visitor: + Visitor.visit + +vmt_MyVisitor: + MyVisitor.visit + +.text + + jal Main + li $v0 10 + syscall + +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + li $a0 4 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_TV + sw $t9 0($t0) + bnez $t0 null1 + la $a0 _str0 + j _error +null1: + lw $t1 0($t0) + lw $t1 0($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +TV.Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 12 + sw $ra -4($fp) + sw $s0 0($sp) + li $a0 28 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Tree + sw $t9 0($t0) + move $s0 $t0 + bnez $s0 null2 + la $a0 _str0 + j _error +null2: + lw $t0 0($s0) + lw $t0 0($t0) + move $a0 $s0 + li $a1 16 + jalr $t0 + bnez $s0 null3 + la $a0 _str0 + j _error +null3: + lw $t0 0($s0) + lw $t0 72($t0) + move $a0 $s0 + jalr $t0 + li $a0 100000000 + jal _print + bnez $s0 null4 + la $a0 _str0 + j _error +null4: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 8 + jalr $t0 + bnez $s0 null5 + la $a0 _str0 + j _error +null5: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 24 + jalr $t0 + bnez $s0 null6 + la $a0 _str0 + j _error +null6: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 4 + jalr $t0 + bnez $s0 null7 + la $a0 _str0 + j _error +null7: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 12 + jalr $t0 + bnez $s0 null8 + la $a0 _str0 + j _error +null8: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 20 + jalr $t0 + bnez $s0 null9 + la $a0 _str0 + j _error +null9: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 28 + jalr $t0 + bnez $s0 null10 + la $a0 _str0 + j _error +null10: + lw $t0 0($s0) + lw $t0 48($t0) + move $a0 $s0 + li $a1 14 + jalr $t0 + bnez $s0 null11 + la $a0 _str0 + j _error +null11: + lw $t0 0($s0) + lw $t0 72($t0) + move $a0 $s0 + jalr $t0 + li $a0 100000000 + jal _print + li $a0 12 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_MyVisitor + sw $t9 0($t0) + move $t0 $t0 + li $a0 50000000 + jal _print + bnez $s0 null12 + la $a0 _str0 + j _error +null12: + lw $t1 0($s0) + lw $t1 80($t1) + move $a0 $s0 + move $a1 $t0 + jalr $t1 + li $a0 100000000 + jal _print + bnez $s0 null13 + la $a0 _str0 + j _error +null13: + lw $t1 0($s0) + lw $t1 68($t1) + move $a0 $s0 + li $a1 24 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s0 null14 + la $a0 _str0 + j _error +null14: + lw $t1 0($s0) + lw $t1 68($t1) + move $a0 $s0 + li $a1 12 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s0 null15 + la $a0 _str0 + j _error +null15: + lw $t1 0($s0) + lw $t1 68($t1) + move $a0 $s0 + li $a1 16 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s0 null16 + la $a0 _str0 + j _error +null16: + lw $t1 0($s0) + lw $t1 68($t1) + move $a0 $s0 + li $a1 50 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s0 null17 + la $a0 _str0 + j _error +null17: + lw $t1 0($s0) + lw $t1 68($t1) + move $a0 $s0 + li $a1 12 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s0 null18 + la $a0 _str0 + j _error +null18: + lw $t1 0($s0) + lw $t1 52($t1) + move $a0 $s0 + li $a1 12 + jalr $t1 + bnez $s0 null19 + la $a0 _str0 + j _error +null19: + lw $t1 0($s0) + lw $t1 72($t1) + move $a0 $s0 + jalr $t1 + bnez $s0 null20 + la $a0 _str0 + j _error +null20: + lw $t1 0($s0) + lw $t1 68($t1) + move $a0 $s0 + li $a1 12 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + li $v0 0 + lw $s0 0($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 12 + jr $ra + +Tree.Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 12($t0) + sw $0 16($t0) + sw $0 20($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 8($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 4($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 8($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 4($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 12($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 12($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 20($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.GetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + lw $t0 16($t0) + move $v0 $t0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 16($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.SetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + sw $t1 20($t0) + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a1 + move $t1 $a2 + addu $t2 $t1 1 + slt $t1 $t0 $t1 + beqz $t1 if1_else + li $t1 0 + j if1_end +if1_else: + slt $t2 $t0 $t2 + li $t9 1 + subu $t2 $t9 $t2 + beqz $t2 if2_else + li $t1 0 + j if2_end +if2_else: + li $t1 1 +if2_end: +if1_end: + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + li $a0 28 + jal _heapAlloc + move $t0 $v0 + la $t9 vmt_Tree + sw $t9 0($t0) + move $s2 $t0 + bnez $s2 null21 + la $a0 _str0 + j _error +null21: + lw $t0 0($s2) + lw $t0 0($t0) + move $a0 $s2 + move $a1 $s1 + jalr $t0 + move $s0 $s0 + li $s3 1 +while1_top: + beqz $s3 while1_end + bnez $s0 null22 + la $a0 _str0 + j _error +null22: + lw $t0 0($s0) + lw $t0 20($t0) + move $a0 $s0 + jalr $t0 + move $t0 $v0 + slt $t0 $s1 $t0 + beqz $t0 if3_else + bnez $s0 null23 + la $a0 _str0 + j _error +null23: + lw $t0 0($s0) + lw $t0 32($t0) + move $a0 $s0 + jalr $t0 + move $t0 $v0 + beqz $t0 if4_else + bnez $s0 null24 + la $a0 _str0 + j _error +null24: + lw $t0 0($s0) + lw $t0 16($t0) + move $a0 $s0 + jalr $t0 + move $s0 $v0 + j if4_end +if4_else: + li $s3 0 + bnez $s0 null25 + la $a0 _str0 + j _error +null25: + lw $t0 0($s0) + lw $t0 36($t0) + move $a0 $s0 + li $a1 1 + jalr $t0 + bnez $s0 null26 + la $a0 _str0 + j _error +null26: + lw $t0 0($s0) + lw $t0 8($t0) + move $a0 $s0 + move $a1 $s2 + jalr $t0 +if4_end: + j if3_end +if3_else: + bnez $s0 null27 + la $a0 _str0 + j _error +null27: + lw $t0 0($s0) + lw $t0 28($t0) + move $a0 $s0 + jalr $t0 + move $t0 $v0 + beqz $t0 if5_else + bnez $s0 null28 + la $a0 _str0 + j _error +null28: + lw $t0 0($s0) + lw $t0 12($t0) + move $a0 $s0 + jalr $t0 + move $s0 $v0 + j if5_end +if5_else: + li $s3 0 + bnez $s0 null29 + la $a0 _str0 + j _error +null29: + lw $t0 0($s0) + lw $t0 40($t0) + move $a0 $s0 + li $a1 1 + jalr $t0 + bnez $s0 null30 + la $a0 _str0 + j _error +null30: + lw $t0 0($s0) + lw $t0 4($t0) + move $a0 $s0 + move $a1 $s2 + jalr $t0 +if5_end: +if3_end: + j while1_top +while1_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 36 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + sw $s4 16($sp) + sw $s5 20($sp) + sw $s6 24($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $s0 + move $s3 $s0 + li $s4 1 + li $s5 0 + li $s6 1 +while2_top: + beqz $s4 while2_end + bnez $s2 null31 + la $a0 _str0 + j _error +null31: + lw $t0 0($s2) + lw $t0 20($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + slt $t1 $s1 $t0 + beqz $t1 if6_else + bnez $s2 null32 + la $a0 _str0 + j _error +null32: + lw $t1 0($s2) + lw $t1 32($t1) + move $a0 $s2 + jalr $t1 + move $t1 $v0 + beqz $t1 if7_else + move $s3 $s2 + bnez $s2 null33 + la $a0 _str0 + j _error +null33: + lw $t1 0($s2) + lw $t1 16($t1) + move $a0 $s2 + jalr $t1 + move $s2 $v0 + j if7_end +if7_else: + li $s4 0 +if7_end: + j if6_end +if6_else: + slt $t0 $t0 $s1 + beqz $t0 if8_else + bnez $s2 null34 + la $a0 _str0 + j _error +null34: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 if9_else + move $s3 $s2 + bnez $s2 null35 + la $a0 _str0 + j _error +null35: + lw $t0 0($s2) + lw $t0 12($t0) + move $a0 $s2 + jalr $t0 + move $s2 $v0 + j if9_end +if9_else: + li $s4 0 +if9_end: + j if8_end +if8_else: + beqz $s6 if10_else + bnez $s2 null36 + la $a0 _str0 + j _error +null36: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + li $t9 1 + subu $t0 $t9 $t0 + beqz $t0 ss1_else + bnez $s2 null37 + la $a0 _str0 + j _error +null37: + lw $t0 0($s2) + lw $t0 32($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + li $t9 1 + subu $t0 $t9 $t0 + j ss1_end +ss1_else: + li $t0 0 +ss1_end: + beqz $t0 if11_else + j if11_end +if11_else: + lw $t0 0($s0) + lw $t0 56($t0) + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jalr $t0 +if11_end: + j if10_end +if10_else: + lw $t0 0($s0) + lw $t0 56($t0) + move $a0 $s0 + move $a1 $s3 + move $a2 $s2 + jalr $t0 +if10_end: + li $s5 1 + li $s4 0 +if8_end: +if6_end: + li $s6 0 + j while2_top +while2_end: + move $v0 $s5 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $s4 16($sp) + lw $s5 20($sp) + lw $s6 24($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 36 + jr $ra + +Tree.Remove: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 + bnez $s2 null38 + la $a0 _str0 + j _error +null38: + lw $t0 0($s2) + lw $t0 32($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 if12_else + lw $t0 0($s0) + lw $t0 64($t0) + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jalr $t0 + j if12_end +if12_else: + bnez $s2 null39 + la $a0 _str0 + j _error +null39: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 if13_else + lw $t0 0($s0) + lw $t0 60($t0) + move $a0 $s0 + move $a1 $s1 + move $a2 $s2 + jalr $t0 + j if13_end +if13_else: + bnez $s2 null40 + la $a0 _str0 + j _error +null40: + lw $t0 0($s2) + lw $t0 20($t0) + move $a0 $s2 + jalr $t0 + move $s2 $v0 + bnez $s1 null41 + la $a0 _str0 + j _error +null41: + lw $t0 0($s1) + lw $t0 16($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + bnez $t0 null42 + la $a0 _str0 + j _error +null42: + lw $t1 0($t0) + lw $t1 20($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + lw $t0 0($s0) + lw $t0 44($t0) + move $a0 $s0 + move $a1 $s2 + move $a2 $t1 + jalr $t0 + move $t0 $v0 + beqz $t0 if14_else + bnez $s1 null43 + la $a0 _str0 + j _error +null43: + lw $t0 0($s1) + lw $t0 8($t0) + lw $t1 24($s0) + move $a0 $s1 + move $a1 $t1 + jalr $t0 + bnez $s1 null44 + la $a0 _str0 + j _error +null44: + lw $t1 0($s1) + lw $t1 36($t1) + move $a0 $s1 + li $a1 0 + jalr $t1 + j if14_end +if14_else: + bnez $s1 null45 + la $a0 _str0 + j _error +null45: + lw $t1 0($s1) + lw $t1 4($t1) + lw $t0 24($s0) + move $a0 $s1 + move $a1 $t0 + jalr $t1 + bnez $s1 null46 + la $a0 _str0 + j _error +null46: + lw $t0 0($s1) + lw $t0 40($t0) + move $a0 $s1 + li $a1 0 + jalr $t0 +if14_end: +if13_end: +if12_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.RemoveRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while3_top: + bnez $s2 null47 + la $a0 _str0 + j _error +null47: + lw $t0 0($s2) + lw $t0 28($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 while3_end + bnez $s2 null48 + la $a0 _str0 + j _error +null48: + lw $s3 0($s2) + lw $s3 24($s3) + bnez $s2 null49 + la $a0 _str0 + j _error +null49: + lw $t0 0($s2) + lw $t0 12($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + bnez $t0 null50 + la $a0 _str0 + j _error +null50: + lw $t1 0($t0) + lw $t1 20($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $s2 + move $a1 $t1 + jalr $s3 + move $s1 $s2 + bnez $s2 null51 + la $a0 _str0 + j _error +null51: + lw $t1 0($s2) + lw $t1 12($t1) + move $a0 $s2 + jalr $t1 + move $s2 $v0 + j while3_top +while3_end: + bnez $s1 null52 + la $a0 _str0 + j _error +null52: + lw $t1 0($s1) + lw $t1 4($t1) + lw $t0 24($s0) + move $a0 $s1 + move $a1 $t0 + jalr $t1 + bnez $s1 null53 + la $a0 _str0 + j _error +null53: + lw $t0 0($s1) + lw $t0 40($t0) + move $a0 $s1 + li $a1 0 + jalr $t0 + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.RemoveLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $s0 $a0 + move $s1 $a1 + move $s2 $a2 +while4_top: + bnez $s2 null54 + la $a0 _str0 + j _error +null54: + lw $t0 0($s2) + lw $t0 32($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + beqz $t0 while4_end + bnez $s2 null55 + la $a0 _str0 + j _error +null55: + lw $s3 0($s2) + lw $s3 24($s3) + bnez $s2 null56 + la $a0 _str0 + j _error +null56: + lw $t0 0($s2) + lw $t0 16($t0) + move $a0 $s2 + jalr $t0 + move $t0 $v0 + bnez $t0 null57 + la $a0 _str0 + j _error +null57: + lw $t1 0($t0) + lw $t1 20($t1) + move $a0 $t0 + jalr $t1 + move $t1 $v0 + move $a0 $s2 + move $a1 $t1 + jalr $s3 + move $s1 $s2 + bnez $s2 null58 + la $a0 _str0 + j _error +null58: + lw $t1 0($s2) + lw $t1 16($t1) + move $a0 $s2 + jalr $t1 + move $s2 $v0 + j while4_top +while4_end: + bnez $s1 null59 + la $a0 _str0 + j _error +null59: + lw $t1 0($s1) + lw $t1 8($t1) + lw $t0 24($s0) + move $a0 $s1 + move $a1 $t0 + jalr $t1 + bnez $s1 null60 + la $a0 _str0 + j _error +null60: + lw $t0 0($s1) + lw $t0 36($t0) + move $a0 $s1 + li $a1 0 + jalr $t0 + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 24 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + sw $s3 12($sp) + move $t0 $a0 + move $s0 $a1 + move $s1 $t0 + li $s2 1 + li $s3 0 +while5_top: + beqz $s2 while5_end + bnez $s1 null61 + la $a0 _str0 + j _error +null61: + lw $t0 0($s1) + lw $t0 20($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + slt $t1 $s0 $t0 + beqz $t1 if15_else + bnez $s1 null62 + la $a0 _str0 + j _error +null62: + lw $t1 0($s1) + lw $t1 32($t1) + move $a0 $s1 + jalr $t1 + move $t1 $v0 + beqz $t1 if16_else + bnez $s1 null63 + la $a0 _str0 + j _error +null63: + lw $t1 0($s1) + lw $t1 16($t1) + move $a0 $s1 + jalr $t1 + move $s1 $v0 + j if16_end +if16_else: + li $s2 0 +if16_end: + j if15_end +if15_else: + slt $t0 $t0 $s0 + beqz $t0 if17_else + bnez $s1 null64 + la $a0 _str0 + j _error +null64: + lw $t0 0($s1) + lw $t0 28($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if18_else + bnez $s1 null65 + la $a0 _str0 + j _error +null65: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $s1 $v0 + j if18_end +if18_else: + li $s2 0 +if18_end: + j if17_end +if17_else: + li $s3 1 + li $s2 0 +if17_end: +if15_end: + j while5_top +while5_end: + move $v0 $s3 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $s3 12($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 24 + jr $ra + +Tree.Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $t0 + lw $t2 0($t0) + lw $t2 76($t2) + move $a0 $t0 + move $a1 $t1 + jalr $t2 + li $v0 1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Tree.RecPrint: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 20 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + sw $s2 8($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null66 + la $a0 _str0 + j _error +null66: + lw $t0 0($s1) + lw $t0 32($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if19_else + lw $s2 0($s0) + lw $s2 76($s2) + bnez $s1 null67 + la $a0 _str0 + j _error +null67: + lw $t0 0($s1) + lw $t0 16($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jalr $s2 + j if19_end +if19_else: +if19_end: + bnez $s1 null68 + la $a0 _str0 + j _error +null68: + lw $t0 0($s1) + lw $t0 20($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + move $a0 $t0 + jal _print + bnez $s1 null69 + la $a0 _str0 + j _error +null69: + lw $t0 0($s1) + lw $t0 28($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if20_else + lw $s2 0($s0) + lw $s2 76($s2) + bnez $s1 null70 + la $a0 _str0 + j _error +null70: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + move $a0 $s0 + move $a1 $t0 + jalr $s2 + j if20_end +if20_else: +if20_end: + li $v0 1 + lw $s0 0($sp) + lw $s1 4($sp) + lw $s2 8($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 20 + jr $ra + +Tree.accept: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + move $t1 $a1 + li $a0 333 + jal _print + bnez $t1 null71 + la $a0 _str0 + j _error +null71: + lw $t2 0($t1) + lw $t2 0($t2) + move $a0 $t1 + move $a1 $t0 + jalr $t2 + li $v0 0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + +Visitor.visit: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null72 + la $a0 _str0 + j _error +null72: + lw $t0 0($s1) + lw $t0 28($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if21_else + bnez $s1 null73 + la $a0 _str0 + j _error +null73: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + sw $t0 8($s0) + lw $t0 8($s0) + bnez $t0 null74 + la $a0 _str0 + j _error +null74: + lw $t1 0($t0) + lw $t1 80($t1) + move $a0 $t0 + move $a1 $s0 + jalr $t1 + j if21_end +if21_else: +if21_end: + bnez $s1 null75 + la $a0 _str0 + j _error +null75: + lw $t1 0($s1) + lw $t1 32($t1) + move $a0 $s1 + jalr $t1 + move $t1 $v0 + beqz $t1 if22_else + bnez $s1 null76 + la $a0 _str0 + j _error +null76: + lw $t1 0($s1) + lw $t1 16($t1) + move $a0 $s1 + jalr $t1 + move $t1 $v0 + sw $t1 4($s0) + lw $t1 4($s0) + bnez $t1 null77 + la $a0 _str0 + j _error +null77: + lw $t0 0($t1) + lw $t0 80($t0) + move $a0 $t1 + move $a1 $s0 + jalr $t0 + j if22_end +if22_else: +if22_end: + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +MyVisitor.visit: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 0($sp) + sw $s1 4($sp) + move $s0 $a0 + move $s1 $a1 + bnez $s1 null78 + la $a0 _str0 + j _error +null78: + lw $t0 0($s1) + lw $t0 28($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + beqz $t0 if23_else + bnez $s1 null79 + la $a0 _str0 + j _error +null79: + lw $t0 0($s1) + lw $t0 12($t0) + move $a0 $s1 + jalr $t0 + move $t0 $v0 + sw $t0 8($s0) + lw $t0 8($s0) + bnez $t0 null80 + la $a0 _str0 + j _error +null80: + lw $t1 0($t0) + lw $t1 80($t1) + move $a0 $t0 + move $a1 $s0 + jalr $t1 + j if23_end +if23_else: +if23_end: + bnez $s1 null81 + la $a0 _str0 + j _error +null81: + lw $t1 0($s1) + lw $t1 20($t1) + move $a0 $s1 + jalr $t1 + move $t1 $v0 + move $a0 $t1 + jal _print + bnez $s1 null82 + la $a0 _str0 + j _error +null82: + lw $t1 0($s1) + lw $t1 32($t1) + move $a0 $s1 + jalr $t1 + move $t1 $v0 + beqz $t1 if24_else + bnez $s1 null83 + la $a0 _str0 + j _error +null83: + lw $t1 0($s1) + lw $t1 16($t1) + move $a0 $s1 + jalr $t1 + move $t1 $v0 + sw $t1 4($s0) + lw $t1 4($s0) + bnez $t1 null84 + la $a0 _str0 + j _error +null84: + lw $t0 0($t1) + lw $t0 80($t0) + move $a0 $t1 + move $a1 $s0 + jalr $t0 + j if24_end +if24_else: +if24_end: + li $v0 0 + lw $s0 0($sp) + lw $s1 4($sp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra + +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra + +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall + +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra + +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/condense/CondenseVisitor.java b/condense/CondenseVisitor.java index b6233b2..fd337d9 100644 --- a/condense/CondenseVisitor.java +++ b/condense/CondenseVisitor.java @@ -8,17 +8,23 @@ import java.util.regex.*; public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{ - ArrayList<String> vaporm; ArrayList<String> mips; StackHelper curr; - public CondenseVisitor(VaporProgram vp, ArrayList<String> vaporm) { - this.vaporm = vaporm; - this.mips = new ArrayList<String>(); + public CondenseVisitor(VaporProgram vp) { + this.mips = new ArrayList<>(); // preamble this.mips.add(0, ".data"); + + MinimalLogger.info("Adding data segments..."); + for (VDataSegment d : vp.dataSegments) { + this.addMIPS(d.ident + ":"); + for (VOperand.Static s : d.values) + this.addMIPS(String.format(" %s", + s.toString().substring(1))); + } this.addMIPS(".text"); this.addMIPS("jal Main"); this.addMIPS("li $v0 10"); @@ -47,12 +53,6 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{ this.addMIPS(((VCodeLabel) n).ident + ":"); } - // epilogue - this.addMIPS(" lw $ra -4($fp)"); - this.addMIPS(" lw $fp -8($fp)"); - this.addMIPS(String.format(" addu $sp $sp %d", - this.curr.getFrameSize())); - this.addMIPS(" jr $ra"); } this.addMIPS("_print:"); @@ -141,7 +141,7 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{ n.getClass().getSimpleName(), n.sourcePos.toString())); /////////////////////////////////////////////////////////////// - this.addMIPS(String.format(" jal %s", + this.addMIPS(String.format(" jalr $%s", n.addr.toString().substring(1))); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<-%s (%s)", @@ -184,9 +184,9 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{ else if (op.equals("Lt")) ; else if (op.equals("LtS")) - ret += " slti"; + ret += " slt"; else if (op.equals("PrintIntS")) { - ret += " jal _print"; + this.addMIPS(" jal _print"); done = true; } else if (op.equals("HeapAllocZ")) { @@ -307,6 +307,10 @@ public class CondenseVisitor extends VInstr.Visitor<RuntimeException>{ n.getClass().getSimpleName(), n.sourcePos.toString())); /////////////////////////////////////////////////////////////// + this.addMIPS(" lw $ra -4($fp)"); + this.addMIPS(" lw $fp -8($fp)"); + this.addMIPS(String.format(" addu $sp $sp %d", + this.curr.getFrameSize())); this.addMIPS(" jr $ra"); /////////////////////////////////////////////////////////////// MinimalLogger.info(String.format("<-%s (%s)", diff --git a/output/BinaryTree.s b/output/BinaryTree.s new file mode 100644 index 0000000..aa95920 --- /dev/null +++ b/output/BinaryTree.s @@ -0,0 +1,3806 @@ +.data +functable_BT: + BT_Start +functable_Tree: + Tree_Init + Tree_SetRight + Tree_SetLeft + Tree_GetRight + Tree_GetLeft + Tree_GetKey + Tree_SetKey + Tree_GetHas_Right + Tree_GetHas_Left + Tree_SetHas_Left + Tree_SetHas_Right + Tree_Compare + Tree_Insert + Tree_Delete + Tree_Remove + Tree_RemoveRight + Tree_RemoveLeft + Tree_Search + Tree_Print + Tree_RecPrint +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_BT + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s5 $s6 + move $s6 $s5 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +BT_Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + li $a0 104 + jal _heapAlloc + move $s6 $v0 + la $t9 functable_Tree + sw $t9 0($s6) + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 16 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s5 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s5 $s4 + move $s6 $s5 + li $s5 100000000 + move $s4 $s5 + move $s5 $s4 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + li $s5 8 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + li $s5 24 + move $s4 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s6 $s4 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s5 0($s4) + li $s4 4 + move $s3 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s4 0($s3) + li $s3 12 + move $s5 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + li $s5 20 + move $s4 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s6 $s4 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s5 0($s4) + li $s4 28 + move $s3 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s4 0($s3) + li $s3 14 + move $s5 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + li $s3 24 + move $s4 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s4 $s3 + move $s3 $s4 + move $a0 $s3 + jal _print + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s4 0($s3) + li $s3 12 + move $s5 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s3 $s5 + move $a0 $s3 + jal _print + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + li $s3 16 + move $s4 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s4 $s3 + move $s3 $s4 + move $a0 $s3 + jal _print + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s4 0($s3) + li $s3 50 + move $s5 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s3 $s5 + move $a0 $s3 + jal _print + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + li $s3 12 + move $s4 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s4 $s3 + move $s3 $s4 + move $a0 $s3 + jal _print + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s4 0($s3) + li $s3 12 + move $s5 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s6 0($s3) + li $s3 12 + move $s5 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s3 $s5 + move $a0 $s3 + jal _print + li $s3 0 + move $s5 $s3 + move $s3 $s5 + move $v0 $s3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 0 + move $s7 $s6 + sw $s7 0($s5) + li $s7 0 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + li $s4 0 + move $s5 $s4 + move $s4 $s5 + move $s5 $s7 + li $s3 1 + move $a0 $s5 + move $t9 $s3 + add $s2 $a0 $t9 + move $s3 $s2 + move $s2 $s3 + move $s3 $s6 + move $s5 $s7 + move $a0 $s3 + move $t9 $s5 + slt $s7 $a0 $t9 + move $s5 $s7 + move $s7 $s5 + beqz $s7 if202_else +if202_body: + li $s7 0 + move $s5 $s7 + move $s4 $s5 + j if202_end +if202_else: + move $s5 $s6 + move $s6 $s2 + move $a0 $s5 + move $t9 $s6 + slt $s2 $a0 $t9 + move $s6 $s2 + move $s2 $s6 + move $s6 $s2 + move $a0 $s6 + li $t9 0 +NULL $s2 $a0 $t9 + move $s6 $s2 + move $s2 $s6 + move $s6 $s2 + beqz $s6 if209_else +if209_body: + li $s6 0 + move $s2 $s6 + move $s4 $s2 + j if209_end +if209_else: + li $s2 1 + move $s6 $s2 + move $s4 $s6 +if209_end: +if202_end: + move $s6 $s4 + move $s4 $s6 + move $s6 $s4 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 292 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + li $a0 104 + jal _heapAlloc + move $s5 $v0 + la $t9 functable_Tree + sw $t9 0($s5) + move $s4 $s5 + move $s5 $s4 + move $s4 $s5 + move $s5 $s4 + move $s4 $s5 + lw $s5 0($s4) + lw $s3 0($s5) + move $s5 $s7 + move $s2 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + move $a1 $s2 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s2 $s5 + move $s5 $s2 + move $s2 $s6 + move $s6 $s2 + move $s2 $s6 + li $s6 1 + move $s3 $s6 + move $s6 $s3 +while240_test: + move $s3 $s6 + lw $t0 -224($fp) + move $t0 $s3 + sw $t0 -224($fp) + lw $t0 -240($fp) + lw $t1 -224($fp) + move $t0 $t1 + sw $t1 -224($fp) + sw $t0 -240($fp) + lw $t0 -240($fp) + beqz $t0 while240_end + sw $t0 -240($fp) +while240_body: + lw $t0 -208($fp) + move $t0 $s2 + sw $t0 -208($fp) + lw $t0 -208($fp) + move $s2 $t0 + sw $t0 -208($fp) + lw $t0 -220($fp) + lw $t0 0($s2) + sw $t0 -220($fp) + lw $t0 -216($fp) + lw $t1 -220($fp) + lw $t0 0($t1) + sw $t1 -220($fp) + sw $t0 -216($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -216($fp) + lw $t1 -216($fp) + jalr $t1 + sw $t1 -216($fp) + sw $t0 -216($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -212($fp) + move $t0 $v0 + sw $t0 -212($fp) + lw $t0 -188($fp) + lw $t1 -212($fp) + move $t0 $t1 + sw $t1 -212($fp) + sw $t0 -188($fp) + lw $t0 -236($fp) + lw $t1 -188($fp) + move $t0 $t1 + sw $t1 -188($fp) + sw $t0 -236($fp) + lw $t0 -120($fp) + move $t0 $s7 + sw $t0 -120($fp) + lw $t0 -160($fp) + lw $t1 -236($fp) + move $t0 $t1 + sw $t1 -236($fp) + sw $t0 -160($fp) + lw $t0 -184($fp) + lw $t1 -120($fp) + lw $t2 -160($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -160($fp) + sw $t1 -120($fp) + sw $t0 -184($fp) + lw $t0 -152($fp) + lw $t1 -184($fp) + move $t0 $t1 + sw $t1 -184($fp) + sw $t0 -152($fp) + lw $t0 -176($fp) + lw $t1 -152($fp) + move $t0 $t1 + sw $t1 -152($fp) + sw $t0 -176($fp) + lw $t0 -176($fp) + beqz $t0 if249_else + sw $t0 -176($fp) +if249_body: + lw $t0 -136($fp) + move $t0 $s2 + sw $t0 -136($fp) + lw $t0 -136($fp) + move $s2 $t0 + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t0 0($s2) + sw $t0 -132($fp) + lw $t0 -148($fp) + lw $t1 -132($fp) + lw $t0 0($t1) + sw $t1 -132($fp) + sw $t0 -148($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -148($fp) + lw $t1 -148($fp) + jalr $t1 + sw $t1 -148($fp) + sw $t0 -148($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -168($fp) + move $t0 $v0 + sw $t0 -168($fp) + lw $t0 -144($fp) + lw $t1 -168($fp) + move $t0 $t1 + sw $t1 -168($fp) + sw $t0 -144($fp) + lw $t0 -112($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -112($fp) + lw $t0 -112($fp) + beqz $t0 if254_else + sw $t0 -112($fp) +if254_body: + move $t7 $s2 + move $s2 $t7 + lw $t0 -96($fp) + lw $t0 0($s2) + sw $t0 -96($fp) + lw $t0 -88($fp) + lw $t1 -96($fp) + lw $t0 0($t1) + sw $t1 -96($fp) + sw $t0 -88($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -88($fp) + lw $t1 -88($fp) + jalr $t1 + sw $t1 -88($fp) + sw $t0 -88($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t5 $v0 + lw $t0 -108($fp) + move $t0 $t5 + sw $t0 -108($fp) + lw $t0 -108($fp) + move $s2 $t0 + sw $t0 -108($fp) + j if254_end +if254_else: + lw $t0 -104($fp) + li $t0 0 + sw $t0 -104($fp) + lw $t0 -76($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -76($fp) + lw $t0 -76($fp) + move $s6 $t0 + sw $t0 -76($fp) + lw $t0 -84($fp) + move $t0 $s2 + sw $t0 -84($fp) + lw $t0 -84($fp) + move $s2 $t0 + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t0 0($s2) + sw $t0 -80($fp) + lw $t0 -248($fp) + lw $t1 -80($fp) + lw $t0 0($t1) + sw $t1 -80($fp) + sw $t0 -248($fp) + lw $t0 -256($fp) + li $t0 1 + sw $t0 -256($fp) + lw $t0 -252($fp) + lw $t1 -256($fp) + move $t0 $t1 + sw $t1 -256($fp) + sw $t0 -252($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -252($fp) + move $a1 $t0 + sw $t0 -252($fp) + lw $t0 -248($fp) + lw $t1 -248($fp) + jalr $t1 + sw $t1 -248($fp) + sw $t0 -248($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -72($fp) + move $t0 $v0 + sw $t0 -72($fp) + lw $t0 -276($fp) + lw $t1 -72($fp) + move $t0 $t1 + sw $t1 -72($fp) + sw $t0 -276($fp) + lw $t0 -276($fp) + move $s5 $t0 + sw $t0 -276($fp) + lw $t0 -284($fp) + move $t0 $s2 + sw $t0 -284($fp) + lw $t0 -284($fp) + move $s2 $t0 + sw $t0 -284($fp) + lw $t0 -280($fp) + lw $t0 0($s2) + sw $t0 -280($fp) + lw $t0 -264($fp) + lw $t1 -280($fp) + lw $t0 0($t1) + sw $t1 -280($fp) + sw $t0 -264($fp) + lw $t0 -260($fp) + move $t0 $s4 + sw $t0 -260($fp) + lw $t0 -268($fp) + lw $t1 -260($fp) + move $t0 $t1 + sw $t1 -260($fp) + sw $t0 -268($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -268($fp) + move $a1 $t0 + sw $t0 -268($fp) + lw $t0 -264($fp) + lw $t1 -264($fp) + jalr $t1 + sw $t1 -264($fp) + sw $t0 -264($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -272($fp) + move $t0 $v0 + sw $t0 -272($fp) + lw $t0 -196($fp) + lw $t1 -272($fp) + move $t0 $t1 + sw $t1 -272($fp) + sw $t0 -196($fp) + lw $t0 -196($fp) + move $s5 $t0 + sw $t0 -196($fp) +if254_end: + j if249_end +if249_else: + lw $t0 -204($fp) + move $t0 $s2 + sw $t0 -204($fp) + lw $t0 -204($fp) + move $s2 $t0 + sw $t0 -204($fp) + lw $t0 -200($fp) + lw $t0 0($s2) + sw $t0 -200($fp) + lw $t0 -232($fp) + lw $t1 -200($fp) + lw $t0 0($t1) + sw $t1 -200($fp) + sw $t0 -232($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -232($fp) + lw $t1 -232($fp) + jalr $t1 + sw $t1 -232($fp) + sw $t0 -232($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -192($fp) + move $t0 $v0 + sw $t0 -192($fp) + lw $t0 -228($fp) + lw $t1 -192($fp) + move $t0 $t1 + sw $t1 -192($fp) + sw $t0 -228($fp) + lw $t0 -244($fp) + lw $t1 -228($fp) + move $t0 $t1 + sw $t1 -228($fp) + sw $t0 -244($fp) + lw $t0 -244($fp) + beqz $t0 if281_else + sw $t0 -244($fp) +if281_body: + move $t3 $s2 + move $s2 $t3 + lw $t3 0($s2) + lw $t4 0($t3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $t4 $t3 + move $s2 $t4 + j if281_end +if281_else: + lw $t0 -116($fp) + li $t0 0 + sw $t0 -116($fp) + lw $t0 -128($fp) + lw $t1 -116($fp) + move $t0 $t1 + sw $t1 -116($fp) + sw $t0 -128($fp) + lw $t0 -128($fp) + move $s6 $t0 + sw $t0 -128($fp) + lw $t0 -164($fp) + move $t0 $s2 + sw $t0 -164($fp) + lw $t0 -164($fp) + move $s2 $t0 + sw $t0 -164($fp) + lw $t0 -156($fp) + lw $t0 0($s2) + sw $t0 -156($fp) + lw $t0 -180($fp) + lw $t1 -156($fp) + lw $t0 0($t1) + sw $t1 -156($fp) + sw $t0 -180($fp) + lw $t0 -172($fp) + li $t0 1 + sw $t0 -172($fp) + lw $t0 -140($fp) + lw $t1 -172($fp) + move $t0 $t1 + sw $t1 -172($fp) + sw $t0 -140($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -140($fp) + move $a1 $t0 + sw $t0 -140($fp) + lw $t0 -180($fp) + lw $t1 -180($fp) + jalr $t1 + sw $t1 -180($fp) + sw $t0 -180($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -124($fp) + move $t0 $v0 + sw $t0 -124($fp) + lw $t0 -68($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -68($fp) + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + move $s0 $s2 + move $s2 $s0 + lw $s1 0($s2) + lw $t0 -292($fp) + lw $t0 0($s1) + sw $t0 -292($fp) + move $t6 $s4 + lw $t0 -100($fp) + move $t0 $t6 + sw $t0 -100($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -100($fp) + move $a1 $t0 + sw $t0 -100($fp) + lw $t0 -292($fp) + lw $t1 -292($fp) + jalr $t1 + sw $t1 -292($fp) + sw $t0 -292($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -288($fp) + move $t0 $v0 + sw $t0 -288($fp) + lw $t0 -92($fp) + lw $t1 -288($fp) + move $t0 $t1 + sw $t1 -288($fp) + sw $t0 -92($fp) + lw $t0 -92($fp) + move $s5 $t0 + sw $t0 -92($fp) +if281_end: +if249_end: + j while240_test +while240_end: + li $t5 1 + move $t6 $t5 + move $t5 $t6 + move $v0 $t5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 292 + jr $ra +Tree_Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 388 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + move $s4 $s5 + move $s5 $s4 + move $s4 $s6 + move $s3 $s4 + move $s4 $s3 + li $s3 1 + move $s2 $s3 + move $s3 $s2 + li $s2 0 + move $s1 $s2 + lw $t0 -68($fp) + move $t0 $s1 + sw $t0 -68($fp) + li $s1 1 + move $s0 $s1 + move $s1 $s0 +while321_test: + move $s0 $s3 + lw $t0 -304($fp) + move $t0 $s0 + sw $t0 -304($fp) + lw $t0 -308($fp) + lw $t1 -304($fp) + move $t0 $t1 + sw $t1 -304($fp) + sw $t0 -308($fp) + lw $t0 -308($fp) + beqz $t0 while321_end + sw $t0 -308($fp) +while321_body: + lw $t0 -300($fp) + move $t0 $s5 + sw $t0 -300($fp) + lw $t0 -300($fp) + move $s5 $t0 + sw $t0 -300($fp) + lw $t0 -296($fp) + lw $t0 0($s5) + sw $t0 -296($fp) + lw $t0 -276($fp) + lw $t1 -296($fp) + lw $t0 0($t1) + sw $t1 -296($fp) + sw $t0 -276($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -276($fp) + lw $t1 -276($fp) + jalr $t1 + sw $t1 -276($fp) + sw $t0 -276($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -288($fp) + move $t0 $v0 + sw $t0 -288($fp) + lw $t0 -272($fp) + lw $t1 -288($fp) + move $t0 $t1 + sw $t1 -288($fp) + sw $t0 -272($fp) + lw $t0 -292($fp) + lw $t1 -272($fp) + move $t0 $t1 + sw $t1 -272($fp) + sw $t0 -292($fp) + lw $t0 -280($fp) + move $t0 $s7 + sw $t0 -280($fp) + lw $t0 -168($fp) + lw $t1 -292($fp) + move $t0 $t1 + sw $t1 -292($fp) + sw $t0 -168($fp) + lw $t0 -284($fp) + lw $t1 -280($fp) + lw $t2 -168($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -168($fp) + sw $t1 -280($fp) + sw $t0 -284($fp) + lw $t0 -164($fp) + lw $t1 -284($fp) + move $t0 $t1 + sw $t1 -284($fp) + sw $t0 -164($fp) + lw $t0 -128($fp) + lw $t1 -164($fp) + move $t0 $t1 + sw $t1 -164($fp) + sw $t0 -128($fp) + lw $t0 -128($fp) + beqz $t0 if330_else + sw $t0 -128($fp) +if330_body: + lw $t0 -148($fp) + move $t0 $s5 + sw $t0 -148($fp) + lw $t0 -148($fp) + move $s5 $t0 + sw $t0 -148($fp) + lw $t0 -160($fp) + lw $t0 0($s5) + sw $t0 -160($fp) + lw $t0 -156($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -156($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -156($fp) + lw $t1 -156($fp) + jalr $t1 + sw $t1 -156($fp) + sw $t0 -156($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -152($fp) + move $t0 $v0 + sw $t0 -152($fp) + lw $t0 -136($fp) + lw $t1 -152($fp) + move $t0 $t1 + sw $t1 -152($fp) + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -132($fp) + lw $t0 -132($fp) + beqz $t0 if335_else + sw $t0 -132($fp) +if335_body: + lw $t0 -144($fp) + move $t0 $s5 + sw $t0 -144($fp) + lw $t0 -140($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s4 $t0 + sw $t0 -140($fp) + lw $t0 -388($fp) + move $t0 $s5 + sw $t0 -388($fp) + lw $t0 -388($fp) + move $s5 $t0 + sw $t0 -388($fp) + lw $t5 0($s5) + lw $t0 -108($fp) + lw $t0 0($t5) + sw $t0 -108($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -108($fp) + lw $t1 -108($fp) + jalr $t1 + sw $t1 -108($fp) + sw $t0 -108($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -124($fp) + move $t0 $v0 + sw $t0 -124($fp) + lw $t0 -104($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -104($fp) + lw $t0 -104($fp) + move $s5 $t0 + sw $t0 -104($fp) + j if335_end +if335_else: + lw $t0 -116($fp) + li $t0 0 + sw $t0 -116($fp) + lw $t0 -112($fp) + lw $t1 -116($fp) + move $t0 $t1 + sw $t1 -116($fp) + sw $t0 -112($fp) + lw $t0 -112($fp) + move $s3 $t0 + sw $t0 -112($fp) +if335_end: + j if330_end +if330_else: + lw $t0 -88($fp) + lw $t1 -292($fp) + move $t0 $t1 + sw $t1 -292($fp) + sw $t0 -88($fp) + lw $t0 -100($fp) + move $t0 $s7 + sw $t0 -100($fp) + lw $t0 -92($fp) + lw $t1 -88($fp) + lw $t2 -100($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -100($fp) + sw $t1 -88($fp) + sw $t0 -92($fp) + lw $t0 -96($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -96($fp) + lw $t0 -188($fp) + lw $t1 -96($fp) + move $t0 $t1 + sw $t1 -96($fp) + sw $t0 -188($fp) + lw $t0 -188($fp) + beqz $t0 if350_else + sw $t0 -188($fp) +if350_body: + move $s2 $s5 + move $s5 $s2 + lw $s2 0($s5) + lw $t3 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $t3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $t3 $s2 + move $s2 $t3 + beqz $s2 if355_else +if355_body: + move $s2 $s5 + move $t3 $s2 + move $s4 $t3 + move $t3 $s5 + move $s5 $t3 + lw $t3 0($s5) + lw $s2 0($t3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $s2 $t3 + move $s5 $s2 + j if355_end +if355_else: + li $s2 0 + move $t3 $s2 + move $s3 $t3 +if355_end: + j if350_end +if350_else: + lw $t0 -184($fp) + move $t0 $s1 + sw $t0 -184($fp) + lw $t0 -180($fp) + lw $t1 -184($fp) + move $t0 $t1 + sw $t1 -184($fp) + sw $t0 -180($fp) + lw $t0 -176($fp) + lw $t1 -180($fp) + move $t0 $t1 + sw $t1 -180($fp) + sw $t0 -176($fp) + lw $t0 -176($fp) + beqz $t0 if370_else + sw $t0 -176($fp) +if370_body: + lw $t0 -232($fp) + move $t0 $s5 + sw $t0 -232($fp) + lw $t0 -232($fp) + move $s5 $t0 + sw $t0 -232($fp) + lw $t0 -244($fp) + lw $t0 0($s5) + sw $t0 -244($fp) + lw $t0 -240($fp) + lw $t1 -244($fp) + lw $t0 0($t1) + sw $t1 -244($fp) + sw $t0 -240($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -240($fp) + lw $t1 -240($fp) + jalr $t1 + sw $t1 -240($fp) + sw $t0 -240($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -236($fp) + move $t0 $v0 + sw $t0 -236($fp) + lw $t0 -260($fp) + lw $t1 -236($fp) + move $t0 $t1 + sw $t1 -236($fp) + sw $t0 -260($fp) + lw $t0 -248($fp) + lw $t1 -260($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -260($fp) + sw $t0 -248($fp) + lw $t0 -256($fp) + lw $t1 -248($fp) + move $t0 $t1 + sw $t1 -248($fp) + sw $t0 -256($fp) + lw $t0 -268($fp) + lw $t1 -256($fp) + move $t0 $t1 + sw $t1 -256($fp) + sw $t0 -268($fp) + lw $t0 -264($fp) + lw $t1 -268($fp) + move $t0 $t1 + sw $t1 -268($fp) + sw $t0 -264($fp) + lw $t0 -208($fp) + move $t0 $s5 + sw $t0 -208($fp) + lw $t0 -208($fp) + move $s5 $t0 + sw $t0 -208($fp) + lw $t0 -196($fp) + lw $t0 0($s5) + sw $t0 -196($fp) + lw $t0 -192($fp) + lw $t1 -196($fp) + lw $t0 0($t1) + sw $t1 -196($fp) + sw $t0 -192($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -192($fp) + lw $t1 -192($fp) + jalr $t1 + sw $t1 -192($fp) + sw $t0 -192($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -212($fp) + move $t0 $v0 + sw $t0 -212($fp) + lw $t0 -204($fp) + lw $t1 -212($fp) + move $t0 $t1 + sw $t1 -212($fp) + sw $t0 -204($fp) + lw $t0 -252($fp) + lw $t1 -204($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -204($fp) + sw $t0 -252($fp) + lw $t0 -200($fp) + lw $t1 -252($fp) + move $t0 $t1 + sw $t1 -252($fp) + sw $t0 -200($fp) + lw $t0 -220($fp) + lw $t1 -200($fp) + move $t0 $t1 + sw $t1 -200($fp) + sw $t0 -220($fp) + lw $t0 -216($fp) + lw $t1 -220($fp) + move $t0 $t1 + sw $t1 -220($fp) + sw $t0 -216($fp) + lw $t0 -228($fp) + lw $t1 -264($fp) + li $a0 1 + move $t9 $t1 +NULL $t0 $a0 $t9 + sw $t1 -264($fp) + sw $t0 -228($fp) + lw $t0 -224($fp) + lw $t1 -216($fp) + li $a0 1 + move $t9 $t1 +NULL $t0 $a0 $t9 + sw $t1 -216($fp) + sw $t0 -224($fp) + lw $t0 -172($fp) + lw $t1 -228($fp) + lw $t2 -224($fp) + move $a0 $t1 + move $t9 $t2 +NULL $t0 $a0 $t9 + sw $t2 -224($fp) + sw $t1 -228($fp) + sw $t0 -172($fp) + lw $t0 -348($fp) + lw $t1 -172($fp) + move $t0 $t1 + sw $t1 -172($fp) + sw $t0 -348($fp) + lw $t0 -356($fp) + lw $t1 -348($fp) + move $t0 $t1 + sw $t1 -348($fp) + sw $t0 -356($fp) + lw $t0 -356($fp) + beqz $t0 if373_else + sw $t0 -356($fp) +if373_body: + lw $t0 -324($fp) + li $t0 1 + sw $t0 -324($fp) + lw $t0 -316($fp) + lw $t1 -324($fp) + move $t0 $t1 + sw $t1 -324($fp) + sw $t0 -316($fp) + lw $t0 -352($fp) + lw $t1 -316($fp) + move $t0 $t1 + sw $t1 -316($fp) + sw $t0 -352($fp) + j if373_end +if373_else: + lw $t0 -332($fp) + move $t0 $s6 + sw $t0 -332($fp) + lw $t0 -364($fp) + lw $t0 0($s6) + sw $t0 -364($fp) + lw $t0 -360($fp) + move $t0 $s4 + sw $t0 -360($fp) + lw $t0 -376($fp) + lw $t1 -360($fp) + move $t0 $t1 + sw $t1 -360($fp) + sw $t0 -376($fp) + lw $t0 -120($fp) + move $t0 $s5 + sw $t0 -120($fp) + lw $t0 -120($fp) + move $t7 $t0 + sw $t0 -120($fp) + lw $t0 -364($fp) + lw $t1 -364($fp) + lw $t0 0($t1) + sw $t1 -364($fp) + sw $t0 -364($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + lw $t0 -376($fp) + move $a1 $t0 + sw $t0 -376($fp) + move $a2 $t7 + lw $t0 -364($fp) + lw $t1 -364($fp) + jalr $t1 + sw $t1 -364($fp) + sw $t0 -364($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -340($fp) + move $t0 $v0 + sw $t0 -340($fp) + lw $t0 -340($fp) + move $t6 $t0 + sw $t0 -340($fp) + lw $t0 -352($fp) + move $t0 $t6 + sw $t0 -352($fp) +if373_end: + j if370_end +if370_else: + lw $t0 -384($fp) + move $t0 $s6 + sw $t0 -384($fp) + lw $t0 -72($fp) + lw $t0 0($s6) + sw $t0 -72($fp) + lw $t0 -76($fp) + move $t0 $s4 + sw $t0 -76($fp) + lw $t0 -80($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -80($fp) + lw $t0 -84($fp) + move $t0 $s5 + sw $t0 -84($fp) + lw $t0 -380($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -380($fp) + lw $t0 -72($fp) + lw $t1 -72($fp) + lw $t0 0($t1) + sw $t1 -72($fp) + sw $t0 -72($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + lw $t0 -80($fp) + move $a1 $t0 + sw $t0 -80($fp) + lw $t0 -380($fp) + move $a2 $t0 + sw $t0 -380($fp) + lw $t0 -72($fp) + lw $t1 -72($fp) + jalr $t1 + sw $t1 -72($fp) + sw $t0 -72($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t4 $v0 + lw $t0 -368($fp) + move $t0 $t4 + sw $t0 -368($fp) + lw $t0 -352($fp) + lw $t1 -368($fp) + move $t0 $t1 + sw $t1 -368($fp) + sw $t0 -352($fp) +if370_end: + lw $t0 -372($fp) + li $t0 1 + sw $t0 -372($fp) + lw $t0 -312($fp) + lw $t1 -372($fp) + move $t0 $t1 + sw $t1 -372($fp) + sw $t0 -312($fp) + lw $t0 -68($fp) + lw $t1 -312($fp) + move $t0 $t1 + sw $t1 -312($fp) + sw $t0 -68($fp) + lw $t0 -320($fp) + li $t0 0 + sw $t0 -320($fp) + lw $t0 -328($fp) + lw $t1 -320($fp) + move $t0 $t1 + sw $t1 -320($fp) + sw $t0 -328($fp) + lw $t0 -328($fp) + move $s3 $t0 + sw $t0 -328($fp) +if350_end: +if330_end: + lw $t0 -336($fp) + li $t0 0 + sw $t0 -336($fp) + lw $t0 -344($fp) + lw $t1 -336($fp) + move $t0 $t1 + sw $t1 -336($fp) + sw $t0 -344($fp) + lw $t0 -344($fp) + move $s1 $t0 + sw $t0 -344($fp) + j while321_test +while321_end: + lw $t0 -68($fp) + move $t4 $t0 + sw $t0 -68($fp) + move $t5 $t4 + move $t4 $t5 + move $v0 $t4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 388 + jr $ra +Tree_Remove: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $s4 $s3 + beqz $s4 if423_else +if423_body: + move $s4 $s5 + lw $s4 0($s5) + move $s3 $s6 + move $s2 $s3 + move $s3 $s7 + move $s1 $s3 + lw $s4 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s2 + move $a2 $s1 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s1 $s3 + move $s3 $s1 + j if423_end +if423_else: + move $s1 $s7 + move $s7 $s1 + lw $s1 0($s7) + lw $s2 0($s1) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + move $s2 $s1 + move $s1 $s2 + beqz $s1 if437_else +if437_body: + move $s1 $s5 + lw $s1 0($s5) + move $s2 $s6 + move $s4 $s2 + move $s2 $s7 + move $s0 $s2 + lw $s1 0($s1) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s4 + move $a2 $s0 + jalr $s1 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s0 $s2 + move $s3 $s0 + j if437_end +if437_else: + move $s0 $s7 + move $s7 $s0 + lw $s0 0($s7) + lw $s2 0($s0) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s2 $s0 + move $s0 $s2 + move $s2 $s6 + move $s6 $s2 + lw $s2 0($s6) + lw $s7 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s7 $s2 + move $s2 $s7 + move $s7 $s2 + lw $s2 0($s7) + lw $s4 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s4 $s2 + move $s2 $s4 + move $s4 $s5 + lw $s4 0($s5) + move $s7 $s0 + move $s0 $s7 + move $s7 $s2 + move $s2 $s7 + lw $s4 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s0 + move $a2 $s2 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s2 $s7 + move $s7 $s2 + beqz $s7 if467_else +if467_body: + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s2 0($s7) + lw $s7 0($s5) + move $s0 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s0 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s0 $s7 + move $s3 $s0 + move $s0 $s6 + move $s6 $s0 + lw $s0 0($s6) + lw $s7 0($s0) + li $s0 0 + move $s2 $s0 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s2 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s2 $s0 + move $s3 $s2 + j if467_end +if467_else: + move $s2 $s6 + move $s6 $s2 + lw $s2 0($s6) + lw $s0 0($s2) + lw $s2 0($s5) + move $s5 $s2 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s5 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s5 $s2 + move $s3 $s5 + move $s5 $s6 + move $s6 $s5 + lw $s5 0($s6) + lw $s2 0($s5) + li $s5 0 + move $s0 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s0 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s0 $s5 + move $s3 $s0 +if467_end: +if437_end: +if423_end: + li $s0 1 + move $s3 $s0 + move $s0 $s3 + move $v0 $s0 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_RemoveRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 144 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + sw $a0 -72($fp) + sw $a1 -68($fp) + move $s7 $a2 +while507_test: + move $s4 $s7 + move $s7 $s4 + lw $t0 -128($fp) + lw $t0 0($s7) + sw $t0 -128($fp) + lw $t0 -124($fp) + lw $t1 -128($fp) + lw $t0 0($t1) + sw $t1 -128($fp) + sw $t0 -124($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -124($fp) + lw $t1 -124($fp) + jalr $t1 + sw $t1 -124($fp) + sw $t0 -124($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -120($fp) + move $t0 $v0 + sw $t0 -120($fp) + lw $t0 -136($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -132($fp) + lw $t0 -132($fp) + beqz $t0 while507_end + sw $t0 -132($fp) +while507_body: + lw $t0 -96($fp) + move $t0 $s7 + sw $t0 -96($fp) + lw $t0 -96($fp) + move $s7 $t0 + sw $t0 -96($fp) + lw $t0 -108($fp) + lw $t0 0($s7) + sw $t0 -108($fp) + lw $t0 -104($fp) + lw $t1 -108($fp) + lw $t0 0($t1) + sw $t1 -108($fp) + sw $t0 -104($fp) + lw $t0 -92($fp) + move $t0 $s7 + sw $t0 -92($fp) + lw $t0 -92($fp) + move $s7 $t0 + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t0 0($s7) + sw $t0 -88($fp) + lw $t0 -88($fp) + lw $s6 0($t0) + sw $t0 -88($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -80($fp) + move $t0 $v0 + sw $t0 -80($fp) + lw $t0 -80($fp) + move $t3 $t0 + sw $t0 -80($fp) + move $s5 $t3 + move $t6 $s5 + lw $t7 0($t6) + lw $t4 0($t7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $t6 + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -84($fp) + move $t0 $v0 + sw $t0 -84($fp) + lw $t0 -84($fp) + move $t5 $t0 + sw $t0 -84($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $t5 + lw $t0 -104($fp) + lw $t1 -104($fp) + jalr $t1 + sw $t1 -104($fp) + sw $t0 -104($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -140($fp) + move $t0 $v0 + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s2 $t0 + sw $t0 -140($fp) + lw $t0 -144($fp) + move $t0 $s2 + sw $t0 -144($fp) + move $s3 $s7 + move $s0 $s3 + lw $t0 -68($fp) + move $t0 $s0 + sw $t0 -68($fp) + lw $t0 -116($fp) + move $t0 $s7 + sw $t0 -116($fp) + lw $t0 -116($fp) + move $s7 $t0 + sw $t0 -116($fp) + lw $t0 -112($fp) + lw $t0 0($s7) + sw $t0 -112($fp) + lw $t0 -76($fp) + lw $t1 -112($fp) + lw $t0 0($t1) + sw $t1 -112($fp) + sw $t0 -76($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -76($fp) + lw $t1 -76($fp) + jalr $t1 + sw $t1 -76($fp) + sw $t0 -76($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + lw $t0 -100($fp) + move $t0 $s1 + sw $t0 -100($fp) + lw $t0 -100($fp) + move $s7 $t0 + sw $t0 -100($fp) + j while507_test +while507_end: + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $s5 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $s5 0($t0) + sw $t0 -68($fp) + lw $s6 0($s5) + lw $t0 -72($fp) + lw $s5 0($t0) + sw $t0 -72($fp) + move $t3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $t3 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $t3 $s5 + lw $t0 -144($fp) + move $t0 $t3 + sw $t0 -144($fp) + lw $t0 -68($fp) + move $t3 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $t3 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $t3 0($t0) + sw $t0 -68($fp) + lw $s5 0($t3) + li $t3 0 + move $s6 $t3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $s6 $t3 + lw $t0 -144($fp) + move $t0 $s6 + sw $t0 -144($fp) + li $s6 1 + move $t3 $s6 + move $s6 $t3 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 144 + jr $ra +Tree_RemoveLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 144 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + sw $a0 -72($fp) + sw $a1 -68($fp) + move $s7 $a2 +while554_test: + move $s4 $s7 + move $s7 $s4 + lw $t0 -128($fp) + lw $t0 0($s7) + sw $t0 -128($fp) + lw $t0 -124($fp) + lw $t1 -128($fp) + lw $t0 0($t1) + sw $t1 -128($fp) + sw $t0 -124($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -124($fp) + lw $t1 -124($fp) + jalr $t1 + sw $t1 -124($fp) + sw $t0 -124($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -120($fp) + move $t0 $v0 + sw $t0 -120($fp) + lw $t0 -136($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -132($fp) + lw $t0 -132($fp) + beqz $t0 while554_end + sw $t0 -132($fp) +while554_body: + lw $t0 -96($fp) + move $t0 $s7 + sw $t0 -96($fp) + lw $t0 -96($fp) + move $s7 $t0 + sw $t0 -96($fp) + lw $t0 -108($fp) + lw $t0 0($s7) + sw $t0 -108($fp) + lw $t0 -104($fp) + lw $t1 -108($fp) + lw $t0 0($t1) + sw $t1 -108($fp) + sw $t0 -104($fp) + lw $t0 -92($fp) + move $t0 $s7 + sw $t0 -92($fp) + lw $t0 -92($fp) + move $s7 $t0 + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t0 0($s7) + sw $t0 -88($fp) + lw $t0 -88($fp) + lw $s6 0($t0) + sw $t0 -88($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -80($fp) + move $t0 $v0 + sw $t0 -80($fp) + lw $t0 -80($fp) + move $t3 $t0 + sw $t0 -80($fp) + move $s5 $t3 + move $t6 $s5 + lw $t7 0($t6) + lw $t4 0($t7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $t6 + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -84($fp) + move $t0 $v0 + sw $t0 -84($fp) + lw $t0 -84($fp) + move $t5 $t0 + sw $t0 -84($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $t5 + lw $t0 -104($fp) + lw $t1 -104($fp) + jalr $t1 + sw $t1 -104($fp) + sw $t0 -104($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -140($fp) + move $t0 $v0 + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s2 $t0 + sw $t0 -140($fp) + lw $t0 -144($fp) + move $t0 $s2 + sw $t0 -144($fp) + move $s3 $s7 + move $s0 $s3 + lw $t0 -68($fp) + move $t0 $s0 + sw $t0 -68($fp) + lw $t0 -116($fp) + move $t0 $s7 + sw $t0 -116($fp) + lw $t0 -116($fp) + move $s7 $t0 + sw $t0 -116($fp) + lw $t0 -112($fp) + lw $t0 0($s7) + sw $t0 -112($fp) + lw $t0 -76($fp) + lw $t1 -112($fp) + lw $t0 0($t1) + sw $t1 -112($fp) + sw $t0 -76($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -76($fp) + lw $t1 -76($fp) + jalr $t1 + sw $t1 -76($fp) + sw $t0 -76($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + lw $t0 -100($fp) + move $t0 $s1 + sw $t0 -100($fp) + lw $t0 -100($fp) + move $s7 $t0 + sw $t0 -100($fp) + j while554_test +while554_end: + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $s5 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $s5 0($t0) + sw $t0 -68($fp) + lw $s6 0($s5) + lw $t0 -72($fp) + lw $s5 0($t0) + sw $t0 -72($fp) + move $t3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $t3 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $t3 $s5 + lw $t0 -144($fp) + move $t0 $t3 + sw $t0 -144($fp) + lw $t0 -68($fp) + move $t3 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $t3 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $t3 0($t0) + sw $t0 -68($fp) + lw $s5 0($t3) + li $t3 0 + move $s6 $t3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $s6 $t3 + lw $t0 -144($fp) + move $t0 $s6 + sw $t0 -144($fp) + li $s6 1 + move $t3 $s6 + move $s6 $t3 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 144 + jr $ra +Tree_Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 180 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + move $s6 $s5 + move $s5 $s6 + li $s6 1 + move $s4 $s6 + move $s6 $s4 + li $s4 0 + move $s3 $s4 + lw $t0 -68($fp) + move $t0 $s3 + sw $t0 -68($fp) +while607_test: + move $s3 $s6 + lw $t0 -156($fp) + move $t0 $s3 + sw $t0 -156($fp) + lw $t0 -116($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -116($fp) + lw $t0 -116($fp) + beqz $t0 while607_end + sw $t0 -116($fp) +while607_body: + lw $t0 -124($fp) + move $t0 $s5 + sw $t0 -124($fp) + lw $t0 -124($fp) + move $s5 $t0 + sw $t0 -124($fp) + lw $t0 -84($fp) + lw $t0 0($s5) + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t1 -84($fp) + lw $t0 0($t1) + sw $t1 -84($fp) + sw $t0 -80($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -80($fp) + lw $t1 -80($fp) + jalr $t1 + sw $t1 -80($fp) + sw $t0 -80($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -132($fp) + move $t0 $v0 + sw $t0 -132($fp) + lw $t0 -92($fp) + lw $t1 -132($fp) + move $t0 $t1 + sw $t1 -132($fp) + sw $t0 -92($fp) + lw $t0 -100($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -100($fp) + move $t4 $s7 + lw $t0 -76($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -76($fp) + lw $t0 -180($fp) + lw $t1 -76($fp) + move $a0 $t4 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -76($fp) + sw $t0 -180($fp) + lw $t0 -72($fp) + lw $t1 -180($fp) + move $t0 $t1 + sw $t1 -180($fp) + sw $t0 -72($fp) + lw $t0 -72($fp) + move $t7 $t0 + sw $t0 -72($fp) + beqz $t7 if616_else +if616_body: + move $t5 $s5 + move $s5 $t5 + lw $t6 0($s5) + lw $t0 -172($fp) + lw $t0 0($t6) + sw $t0 -172($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -172($fp) + lw $t1 -172($fp) + jalr $t1 + sw $t1 -172($fp) + sw $t0 -172($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + lw $t0 -168($fp) + move $t0 $s0 + sw $t0 -168($fp) + lw $t0 -96($fp) + lw $t1 -168($fp) + move $t0 $t1 + sw $t1 -168($fp) + sw $t0 -96($fp) + lw $t0 -96($fp) + beqz $t0 if621_else + sw $t0 -96($fp) +if621_body: + lw $t0 -144($fp) + move $t0 $s5 + sw $t0 -144($fp) + lw $t0 -144($fp) + move $s5 $t0 + sw $t0 -144($fp) + lw $t0 -164($fp) + lw $t0 0($s5) + sw $t0 -164($fp) + lw $t0 -152($fp) + lw $t1 -164($fp) + lw $t0 0($t1) + sw $t1 -164($fp) + sw $t0 -152($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -152($fp) + lw $t1 -152($fp) + jalr $t1 + sw $t1 -152($fp) + sw $t0 -152($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -148($fp) + move $t0 $v0 + sw $t0 -148($fp) + lw $t0 -112($fp) + lw $t1 -148($fp) + move $t0 $t1 + sw $t1 -148($fp) + sw $t0 -112($fp) + lw $t0 -112($fp) + move $s5 $t0 + sw $t0 -112($fp) + j if621_end +if621_else: + lw $t0 -104($fp) + li $t0 0 + sw $t0 -104($fp) + lw $t0 -136($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -136($fp) + lw $t0 -136($fp) + move $s6 $t0 + sw $t0 -136($fp) +if621_end: + j if616_end +if616_else: + lw $t0 -88($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -88($fp) + move $s1 $s7 + lw $t0 -128($fp) + lw $t1 -88($fp) + move $a0 $t1 + move $t9 $s1 + slt $t0 $a0 $t9 + sw $t1 -88($fp) + sw $t0 -128($fp) + lw $t0 -128($fp) + move $s2 $t0 + sw $t0 -128($fp) + lw $t0 -176($fp) + move $t0 $s2 + sw $t0 -176($fp) + lw $t0 -176($fp) + beqz $t0 if634_else + sw $t0 -176($fp) +if634_body: + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s5) + lw $t3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $t3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $t3 $s4 + move $s4 $t3 + beqz $s4 if639_else +if639_body: + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s5) + lw $t3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $t3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $t3 $s4 + move $s5 $t3 + j if639_end +if639_else: + li $t3 0 + move $s4 $t3 + move $s6 $s4 +if639_end: + j if634_end +if634_else: + lw $t0 -160($fp) + li $t0 1 + sw $t0 -160($fp) + lw $t0 -120($fp) + lw $t1 -160($fp) + move $t0 $t1 + sw $t1 -160($fp) + sw $t0 -120($fp) + lw $t0 -68($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -68($fp) + lw $t0 -108($fp) + li $t0 0 + sw $t0 -108($fp) + lw $t0 -140($fp) + lw $t1 -108($fp) + move $t0 $t1 + sw $t1 -108($fp) + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s6 $t0 + sw $t0 -140($fp) +if634_end: +if616_end: + j while607_test +while607_end: + lw $t0 -68($fp) + move $t4 $t0 + sw $t0 -68($fp) + move $t5 $t4 + move $t4 $t5 + move $v0 $t4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 180 + jr $ra +Tree_Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $s6 $s7 + move $s5 $s6 + move $s6 $s5 + move $s5 $s7 + lw $s5 0($s7) + move $s4 $s6 + move $s6 $s4 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s6 $s4 + move $s4 $s6 + li $s4 1 + move $s6 $s4 + move $s4 $s6 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_RecPrint: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + beqz $s5 if670_else +if670_body: + move $s5 $s6 + lw $s5 0($s6) + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s3 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $s4 $s3 + j if670_end +if670_else: + li $s3 1 + move $s5 $s3 + move $s4 $s5 +if670_end: + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + beqz $s5 if693_else +if693_body: + move $s5 $s6 + lw $s5 0($s6) + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s2 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s4 $s2 + j if693_end +if693_else: + li $s2 1 + move $s3 $s2 + move $s4 $s3 +if693_end: + li $s3 1 + move $s4 $s3 + move $s3 $s4 + move $v0 $s3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/BinaryTree.vaporm b/output/BinaryTree.vaporm index 135a5f5..427d246 100644 --- a/output/BinaryTree.vaporm +++ b/output/BinaryTree.vaporm @@ -33,15 +33,16 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_BT $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s7 call $s5 $t3 = local[8] $t4 = local[9] @@ -49,9 +50,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s5 = $s7 - PrintIntS($s5 ) + $s6 = $v0 + $s5 = $s6 + $s6 = $s5 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -74,10 +76,14 @@ func BT_Start [in 0, out 0, local 14] $s6 = HeapAllocZ(104 ) [$s6+0] = :functable_Tree $s7 = $s6 - $s7 = $s7 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 $s6 = [$s7+0] $s5 = [$s6+0] $s6 = 16 + $s4 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -85,7 +91,7 @@ func BT_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] @@ -93,9 +99,11 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s6 = $v0 + $s4 = $s6 $s6 = $s4 - $s7 = $s7 + $s4 = $s7 + $s7 = $s4 $s4 = [$s7+0] $s5 = [$s4+72] local[8] = $t3 @@ -113,33 +121,18 @@ func BT_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s6 = $s4 - $s4 = 100000000 - PrintIntS($s4 ) - $s7 = $s7 - $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] + $s5 = $s4 + $s6 = $s5 + $s5 = 100000000 + $s4 = $s5 + $s5 = $s4 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+48] + $s5 = 8 + $s3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -147,6 +140,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 + $a1 = $s3 call $s4 $t3 = local[8] $t4 = local[9] @@ -154,12 +148,13 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 + $s5 = $v0 + $s3 = $s5 $s6 = $s3 - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] - $s4 = [$s3+48] - $s3 = 24 + $s5 = [$s3+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -167,20 +162,22 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 - call $s4 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 + $s3 = $v0 + $s5 = $s3 $s6 = $s5 - $s7 = $s7 + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] $s3 = [$s5+48] - $s5 = 4 + $s5 = 24 + $s4 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -188,7 +185,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 + $a1 = $s4 call $s3 $t3 = local[8] $t4 = local[9] @@ -196,12 +193,15 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s5 = $v0 + $s4 = $s5 $s6 = $s4 - $s7 = $s7 + $s4 = $s7 + $s7 = $s4 $s4 = [$s7+0] $s5 = [$s4+48] - $s4 = 12 + $s4 = 4 + $s3 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -209,7 +209,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s4 + $a1 = $s3 call $s5 $t3 = local[8] $t4 = local[9] @@ -217,12 +217,15 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 + $s4 = $v0 + $s3 = $s4 $s6 = $s3 - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] $s4 = [$s3+48] - $s3 = 20 + $s3 = 12 + $s5 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -230,7 +233,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 + $a1 = $s5 call $s4 $t3 = local[8] $t4 = local[9] @@ -238,12 +241,15 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 + $s3 = $v0 + $s5 = $s3 $s6 = $s5 - $s7 = $s7 + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] $s3 = [$s5+48] - $s5 = 28 + $s5 = 20 + $s4 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -251,7 +257,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s5 + $a1 = $s4 call $s3 $t3 = local[8] $t4 = local[9] @@ -259,12 +265,15 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s5 = $v0 + $s4 = $s5 $s6 = $s4 - $s7 = $s7 + $s4 = $s7 + $s7 = $s4 $s4 = [$s7+0] $s5 = [$s4+48] - $s4 = 14 + $s4 = 28 + $s3 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -272,7 +281,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s4 + $a1 = $s3 call $s5 $t3 = local[8] $t4 = local[9] @@ -280,11 +289,15 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 + $s4 = $v0 + $s3 = $s4 $s6 = $s3 - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] - $s4 = [$s3+72] + $s4 = [$s3+48] + $s3 = 14 + $s5 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -292,6 +305,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 + $a1 = $s5 call $s4 $t3 = local[8] $t4 = local[9] @@ -300,11 +314,12 @@ func BT_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s3 = $v0 - $s6 = $s3 - $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+68] - $s3 = 24 + $s5 = $s3 + $s6 = $s5 + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s3 = [$s5+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -312,8 +327,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 - call $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -322,11 +336,13 @@ func BT_Start [in 0, out 0, local 14] $t8 = local[13] $s5 = $v0 $s3 = $s5 - PrintIntS($s3 ) - $s7 = $s7 + $s6 = $s3 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] $s5 = [$s3+68] - $s3 = 12 + $s3 = 24 + $s4 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -334,7 +350,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -342,13 +358,16 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s3 = $v0 + $s4 = $s3 $s3 = $s4 PrintIntS($s3 ) - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] $s4 = [$s3+68] - $s3 = 16 + $s3 = 12 + $s5 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -356,7 +375,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 + $a1 = $s5 call $s4 $t3 = local[8] $t4 = local[9] @@ -364,13 +383,16 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 + $s3 = $v0 + $s5 = $s3 $s3 = $s5 PrintIntS($s3 ) - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] $s5 = [$s3+68] - $s3 = 50 + $s3 = 16 + $s4 = $s3 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 = $s3 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -386,13 +408,16 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s3 = $v0 + $s4 = $s3 $s3 = $s4 PrintIntS($s3 ) - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] $s4 = [$s3+68] - $s3 = 12 + $s3 = 50 + $s5 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -400,7 +425,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 + $a1 = $s5 call $s4 $t3 = local[8] $t4 = local[9] @@ -408,13 +433,16 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 + $s3 = $v0 + $s5 = $s3 $s3 = $s5 PrintIntS($s3 ) - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] - $s5 = [$s3+52] + $s5 = [$s3+68] $s3 = 12 + $s4 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -422,7 +450,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -430,11 +458,38 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s6 = $s4 - $s7 = $s7 - $s4 = [$s7+0] - $s3 = [$s4+72] + $s3 = $v0 + $s4 = $s3 + $s3 = $s4 + PrintIntS($s3 ) + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s4 = [$s3+52] + $s3 = 12 + $s5 = $s3 + 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] + $s3 = $v0 + $s5 = $s3 + $s6 = $s5 + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s3 = [$s5+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -449,12 +504,15 @@ func BT_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s6 = $s4 - $s7 = $s7 - $s4 = [$s7+0] - $s6 = [$s4+68] - $s4 = 12 + $s5 = $v0 + $s3 = $s5 + $s6 = $s3 + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s6 = [$s3+68] + $s3 = 12 + $s5 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -462,7 +520,7 @@ func BT_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s4 + $a1 = $s5 call $s6 $t3 = local[8] $t4 = local[9] @@ -471,10 +529,13 @@ func BT_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s3 = $v0 - $s4 = $s3 - PrintIntS($s4 ) - $s4 = 0 - $v0 = $s4 + $s5 = $s3 + $s3 = $s5 + PrintIntS($s3 ) + $s3 = 0 + $s5 = $s3 + $s3 = $s5 + $v0 = $s3 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -493,12 +554,20 @@ func Tree_Init [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+88] = $s7 - [$s6+92] = 0 - [$s6+96] = 0 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+88] = $s6 + $s6 = 0 + $s7 = $s6 + [$s5+92] = $s7 + $s7 = 0 + $s6 = $s7 + [$s5+96] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -518,10 +587,14 @@ func Tree_SetRight [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+84] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+84] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -541,10 +614,14 @@ func Tree_SetLeft [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+80] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+80] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -566,6 +643,8 @@ func Tree_GetRight [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+84] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -587,6 +666,8 @@ func Tree_GetLeft [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+80] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -608,6 +689,8 @@ func Tree_GetKey [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+88] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -627,10 +710,14 @@ func Tree_SetKey [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+88] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+88] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -652,6 +739,8 @@ func Tree_GetHas_Right [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+96] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -673,6 +762,8 @@ func Tree_GetHas_Left [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+92] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -692,10 +783,14 @@ func Tree_SetHas_Left [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+92] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+92] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -715,10 +810,14 @@ func Tree_SetHas_Right [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+96] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+96] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -742,34 +841,51 @@ func Tree_Compare [in 0, out 0, local 14] $s6 = $a1 $s7 = $a2 $s4 = 0 + $s5 = $s4 + $s4 = $s5 $s5 = $s7 $s3 = 1 $s2 = Add($s5 $s3 ) $s3 = $s2 - $s2 = $s6 + $s2 = $s3 + $s3 = $s6 $s5 = $s7 - $s7 = LtS($s2 $s5 ) + $s7 = LtS($s3 $s5 ) $s5 = $s7 - if0 $s5 goto :if100_else -if100_body: - $s4 = 0 - goto :if100_end -if100_else: + $s7 = $s5 + if0 $s7 goto :if202_else +if202_body: + $s7 = 0 + $s5 = $s7 + $s4 = $s5 + goto :if202_end +if202_else: $s5 = $s6 - $s6 = $s3 - $s3 = LtS($s5 $s6 ) - $s6 = Eq($s3 0 ) - $s3 = $s6 - if0 $s3 goto :if104_else -if104_body: - $s4 = 0 - goto :if104_end -if104_else: - $s4 = 1 -if104_end: -if100_end: - $s3 = $s4 - $v0 = $s3 + $s6 = $s2 + $s2 = LtS($s5 $s6 ) + $s6 = $s2 + $s2 = $s6 + $s6 = $s2 + $s2 = Eq($s6 0 ) + $s6 = $s2 + $s2 = $s6 + $s6 = $s2 + if0 $s6 goto :if209_else +if209_body: + $s6 = 0 + $s2 = $s6 + $s4 = $s2 + goto :if209_end +if209_else: + $s2 = 1 + $s6 = $s2 + $s4 = $s6 +if209_end: +if202_end: + $s6 = $s4 + $s4 = $s6 + $s6 = $s4 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -779,7 +895,7 @@ if100_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Insert [in 0, out 0, local 44] +func Tree_Insert [in 0, out 0, local 71] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -793,10 +909,14 @@ func Tree_Insert [in 0, out 0, local 44] $s5 = HeapAllocZ(104 ) [$s5+0] = :functable_Tree $s4 = $s5 - $s4 = $s4 + $s5 = $s4 + $s4 = $s5 + $s5 = $s4 + $s4 = $s5 $s5 = [$s4+0] $s3 = [$s5+0] $s5 = $s7 + $s2 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -804,7 +924,7 @@ func Tree_Insert [in 0, out 0, local 44] local[12] = $t7 local[13] = $t8 $a0 = $s4 - $a1 = $s5 + $a1 = $s2 call $s3 $t3 = local[8] $t4 = local[9] @@ -812,23 +932,43 @@ func Tree_Insert [in 0, out 0, local 44] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 + $s5 = $v0 + $s2 = $s5 $s5 = $s2 $s2 = $s6 + $s6 = $s2 + $s2 = $s6 $s6 = 1 -while115_test: $s3 = $s6 - if0 $s3 goto :while115_end -while115_body: - $s2 = $s2 - $t0 = local[27] + $s6 = $s3 +while240_test: + $s3 = $s6 + $t0 = local[53] + $t0 = $s3 + local[53] = $t0 + $t0 = local[57] + $t1 = local[53] + $t0 = $t1 + local[53] = $t1 + local[57] = $t0 + $t0 = local[57] + if0 $t0 goto :while240_end + local[57] = $t0 +while240_body: + $t0 = local[49] + $t0 = $s2 + local[49] = $t0 + $t0 = local[49] + $s2 = $t0 + local[49] = $t0 + $t0 = local[52] $t0 = [$s2+0] - local[27] = $t0 - $t0 = local[33] - $t1 = local[27] + local[52] = $t0 + $t0 = local[51] + $t1 = local[52] $t0 = [$t1+20] - local[27] = $t1 - local[33] = $t0 + local[52] = $t1 + local[51] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -836,58 +976,73 @@ while115_body: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[33] - $t1 = local[33] + $t0 = local[51] + $t1 = local[51] call $t1 - local[33] = $t1 - local[33] = $t0 + local[51] = $t1 + local[51] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[29] + $t0 = local[50] $t0 = $v0 - local[29] = $t0 + local[50] = $t0 + $t0 = local[44] + $t1 = local[50] + $t0 = $t1 + local[50] = $t1 + local[44] = $t0 + $t0 = local[56] + $t1 = local[44] + $t0 = $t1 + local[44] = $t1 + local[56] = $t0 + $t0 = local[27] + $t0 = $s7 + local[27] = $t0 $t0 = local[37] - $t1 = local[29] + $t1 = local[56] $t0 = $t1 - local[29] = $t1 + local[56] = $t1 local[37] = $t0 - $t0 = local[24] - $t0 = $s7 - local[24] = $t0 - $t0 = local[23] - $t1 = local[37] + $t0 = local[43] + $t1 = local[27] + $t2 = local[37] + $t0 = LtS($t1 $t2 ) + local[37] = $t2 + local[27] = $t1 + local[43] = $t0 + $t0 = local[35] + $t1 = local[43] $t0 = $t1 - local[37] = $t1 - local[23] = $t0 + local[43] = $t1 + local[35] = $t0 + $t0 = local[41] + $t1 = local[35] + $t0 = $t1 + local[35] = $t1 + local[41] = $t0 + $t0 = local[41] + if0 $t0 goto :if249_else + local[41] = $t0 +if249_body: $t0 = local[31] - $t1 = local[24] - $t2 = local[23] - $t0 = LtS($t1 $t2 ) - local[23] = $t2 - local[24] = $t1 + $t0 = $s2 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: - $s2 = $s2 - $t0 = local[15] + $t0 = local[31] + $s2 = $t0 + local[31] = $t0 + $t0 = local[30] $t0 = [$s2+0] - local[15] = $t0 - $t0 = local[21] - $t1 = local[15] + local[30] = $t0 + $t0 = local[34] + $t1 = local[30] $t0 = [$t1+32] - local[15] = $t1 - local[21] = $t0 + local[30] = $t1 + local[34] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -895,34 +1050,44 @@ if120_body: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[21] - $t1 = local[21] + $t0 = local[34] + $t1 = local[34] call $t1 - local[21] = $t1 - local[21] = $t0 + local[34] = $t1 + local[34] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[17] + $t0 = local[39] $t0 = $v0 - local[17] = $t0 - $t0 = local[19] - $t1 = local[17] + local[39] = $t0 + $t0 = local[33] + $t1 = local[39] $t0 = $t1 - local[17] = $t1 - local[19] = $t0 + local[39] = $t1 + local[33] = $t0 + $t0 = local[25] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[25] = $t0 + $t0 = local[25] + if0 $t0 goto :if254_else + local[25] = $t0 +if254_body: + $t7 = $s2 + $s2 = $t7 + $t0 = local[21] + $t0 = [$s2+0] + local[21] = $t0 $t0 = local[19] - if0 $t0 goto :if124_else + $t1 = local[21] + $t0 = [$t1+16] + local[21] = $t1 local[19] = $t0 -if124_body: - $s2 = $s2 - $s1 = [$s2+0] - $t0 = local[42] - $t0 = [$s1+16] - local[42] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -930,34 +1095,59 @@ if124_body: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[42] - $t1 = local[42] + $t0 = local[19] + $t1 = local[19] call $t1 - local[42] = $t1 - local[42] = $t0 + local[19] = $t1 + local[19] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 - $s2 = $t7 - goto :if124_end -if124_else: - $s6 = 0 - $s2 = $s2 - $t0 = local[41] + $t5 = $v0 + $t0 = local[24] + $t0 = $t5 + local[24] = $t0 + $t0 = local[24] + $s2 = $t0 + local[24] = $t0 + goto :if254_end +if254_else: + $t0 = local[23] + $t0 = 0 + local[23] = $t0 + $t0 = local[16] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[16] = $t0 + $t0 = local[16] + $s6 = $t0 + local[16] = $t0 + $t0 = local[18] + $t0 = $s2 + local[18] = $t0 + $t0 = local[18] + $s2 = $t0 + local[18] = $t0 + $t0 = local[17] $t0 = [$s2+0] - local[41] = $t0 - $t0 = local[40] - $t1 = local[41] + local[17] = $t0 + $t0 = local[59] + $t1 = local[17] $t0 = [$t1+36] - local[41] = $t1 - local[40] = $t0 - $t0 = local[26] + local[17] = $t1 + local[59] = $t0 + $t0 = local[61] $t0 = 1 - local[26] = $t0 + local[61] = $t0 + $t0 = local[60] + $t1 = local[61] + $t0 = $t1 + local[61] = $t1 + local[60] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -965,34 +1155,53 @@ if124_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[26] + $t0 = local[60] $a1 = $t0 - local[26] = $t0 - $t0 = local[40] - $t1 = local[40] + local[60] = $t0 + $t0 = local[59] + $t1 = local[59] call $t1 - local[40] = $t1 - local[40] = $t0 + local[59] = $t1 + local[59] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s5 = $t5 - $s2 = $s2 - $t0 = local[35] + $t0 = local[15] + $t0 = $v0 + local[15] = $t0 + $t0 = local[66] + $t1 = local[15] + $t0 = $t1 + local[15] = $t1 + local[66] = $t0 + $t0 = local[66] + $s5 = $t0 + local[66] = $t0 + $t0 = local[68] + $t0 = $s2 + local[68] = $t0 + $t0 = local[68] + $s2 = $t0 + local[68] = $t0 + $t0 = local[67] $t0 = [$s2+0] - local[35] = $t0 - $t0 = local[39] - $t1 = local[35] + local[67] = $t0 + $t0 = local[63] + $t1 = local[67] $t0 = [$t1+8] - local[35] = $t1 - local[39] = $t0 - $t0 = local[38] + local[67] = $t1 + local[63] = $t0 + $t0 = local[62] $t0 = $s4 - local[38] = $t0 + local[62] = $t0 + $t0 = local[64] + $t1 = local[62] + $t0 = $t1 + local[62] = $t1 + local[64] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1000,38 +1209,48 @@ if124_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[38] + $t0 = local[64] $a1 = $t0 - local[38] = $t0 - $t0 = local[39] - $t1 = local[39] + local[64] = $t0 + $t0 = local[63] + $t1 = local[63] call $t1 - local[39] = $t1 - local[39] = $t0 + local[63] = $t1 + local[63] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[36] + $t0 = local[65] $t0 = $v0 - local[36] = $t0 - $t0 = local[36] + local[65] = $t0 + $t0 = local[46] + $t1 = local[65] + $t0 = $t1 + local[65] = $t1 + local[46] = $t0 + $t0 = local[46] $s5 = $t0 - local[36] = $t0 -if124_end: - goto :if120_end -if120_else: - $s2 = $s2 - $t0 = local[28] + local[46] = $t0 +if254_end: + goto :if249_end +if249_else: + $t0 = local[48] + $t0 = $s2 + local[48] = $t0 + $t0 = local[48] + $s2 = $t0 + local[48] = $t0 + $t0 = local[47] $t0 = [$s2+0] - local[28] = $t0 - $t0 = local[34] - $t1 = local[28] + local[47] = $t0 + $t0 = local[55] + $t1 = local[47] $t0 = [$t1+28] - local[28] = $t1 - local[34] = $t0 + local[47] = $t1 + local[55] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1039,30 +1258,36 @@ if120_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[34] - $t1 = local[34] + $t0 = local[55] + $t1 = local[55] call $t1 - local[34] = $t1 - local[34] = $t0 + local[55] = $t1 + local[55] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[30] + $t0 = local[45] $t0 = $v0 - local[30] = $t0 - $t0 = local[32] - $t1 = local[30] + local[45] = $t0 + $t0 = local[54] + $t1 = local[45] $t0 = $t1 - local[30] = $t1 - local[32] = $t0 - $t0 = local[32] - if0 $t0 goto :if139_else - local[32] = $t0 -if139_body: - $s2 = $s2 + local[45] = $t1 + local[54] = $t0 + $t0 = local[58] + $t1 = local[54] + $t0 = $t1 + local[54] = $t1 + local[58] = $t0 + $t0 = local[58] + if0 $t0 goto :if281_else + local[58] = $t0 +if281_body: + $t3 = $s2 + $s2 = $t3 $t3 = [$s2+0] $t4 = [$t3+12] local[8] = $t3 @@ -1080,22 +1305,43 @@ if139_body: $t7 = local[12] $t8 = local[13] $t3 = $v0 - $s2 = $t3 - goto :if139_end -if139_else: - $s6 = 0 - $s2 = $s2 - $t0 = local[16] + $t4 = $t3 + $s2 = $t4 + goto :if281_end +if281_else: + $t0 = local[26] + $t0 = 0 + local[26] = $t0 + $t0 = local[29] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[29] = $t0 + $t0 = local[29] + $s6 = $t0 + local[29] = $t0 + $t0 = local[38] + $t0 = $s2 + local[38] = $t0 + $t0 = local[38] + $s2 = $t0 + local[38] = $t0 + $t0 = local[36] $t0 = [$s2+0] - local[16] = $t0 - $t0 = local[22] - $t1 = local[16] + local[36] = $t0 + $t0 = local[42] + $t1 = local[36] $t0 = [$t1+40] - local[16] = $t1 - local[22] = $t0 - $t0 = local[20] + local[36] = $t1 + local[42] = $t0 + $t0 = local[40] $t0 = 1 - local[20] = $t0 + local[40] = $t0 + $t0 = local[32] + $t1 = local[40] + $t0 = $t1 + local[40] = $t1 + local[32] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1103,34 +1349,41 @@ if139_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[20] + $t0 = local[32] $a1 = $t0 - local[20] = $t0 - $t0 = local[22] - $t1 = local[22] + local[32] = $t0 + $t0 = local[42] + $t1 = local[42] call $t1 - local[22] = $t1 - local[22] = $t0 + local[42] = $t1 + local[42] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[18] + $t0 = local[28] $t0 = $v0 - local[18] = $t0 - $t0 = local[18] - $s5 = $t0 - local[18] = $t0 - $s2 = $s2 - $s0 = [$s2+0] + local[28] = $t0 $t0 = local[14] - $t0 = [$s0+4] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 local[14] = $t0 - $t0 = local[43] - $t0 = $s4 - local[43] = $t0 + $t0 = local[14] + $s5 = $t0 + local[14] = $t0 + $s0 = $s2 + $s2 = $s0 + $s1 = [$s2+0] + $t0 = local[70] + $t0 = [$s1+4] + local[70] = $t0 + $t6 = $s4 + $t0 = local[22] + $t0 = $t6 + local[22] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1138,27 +1391,38 @@ if139_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[43] + $t0 = local[22] $a1 = $t0 - local[43] = $t0 - $t0 = local[14] - $t1 = local[14] + local[22] = $t0 + $t0 = local[70] + $t1 = local[70] call $t1 - local[14] = $t1 - local[14] = $t0 + local[70] = $t1 + local[70] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $s5 = $t6 -if139_end: -if120_end: - goto :while115_test -while115_end: + $t0 = local[69] + $t0 = $v0 + local[69] = $t0 + $t0 = local[20] + $t1 = local[69] + $t0 = $t1 + local[69] = $t1 + local[20] = $t0 + $t0 = local[20] + $s5 = $t0 + local[20] = $t0 +if281_end: +if249_end: + goto :while240_test +while240_end: $t5 = 1 + $t6 = $t5 + $t5 = $t6 $v0 = $t5 $s0 = local[0] $s1 = local[1] @@ -1169,7 +1433,7 @@ while115_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Delete [in 0, out 0, local 54] +func Tree_Delete [in 0, out 0, local 95] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1181,25 +1445,50 @@ func Tree_Delete [in 0, out 0, local 54] $s6 = $a0 $s7 = $a1 $s5 = $s6 + $s4 = $s5 + $s5 = $s4 $s4 = $s6 + $s3 = $s4 + $s4 = $s3 $s3 = 1 + $s2 = $s3 + $s3 = $s2 + $s2 = 0 + $s1 = $s2 $t0 = local[14] - $t0 = 0 + $t0 = $s1 local[14] = $t0 $s1 = 1 -while155_test: + $s0 = $s1 + $s1 = $s0 +while321_test: $s0 = $s3 - if0 $s0 goto :while155_end -while155_body: - $s5 = $s5 - $t0 = local[45] + $t0 = local[73] + $t0 = $s0 + local[73] = $t0 + $t0 = local[74] + $t1 = local[73] + $t0 = $t1 + local[73] = $t1 + local[74] = $t0 + $t0 = local[74] + if0 $t0 goto :while321_end + local[74] = $t0 +while321_body: + $t0 = local[72] + $t0 = $s5 + local[72] = $t0 + $t0 = local[72] + $s5 = $t0 + local[72] = $t0 + $t0 = local[71] $t0 = [$s5+0] - local[45] = $t0 - $t0 = local[50] - $t1 = local[45] + local[71] = $t0 + $t0 = local[66] + $t1 = local[71] $t0 = [$t1+20] - local[45] = $t1 - local[50] = $t0 + local[71] = $t1 + local[66] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1207,58 +1496,73 @@ while155_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[50] - $t1 = local[50] + $t0 = local[66] + $t1 = local[66] call $t1 - local[50] = $t1 - local[50] = $t0 + local[66] = $t1 + local[66] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[25] + $t0 = local[69] $t0 = $v0 - local[25] = $t0 - $t0 = local[26] - $t1 = local[25] + local[69] = $t0 + $t0 = local[65] + $t1 = local[69] $t0 = $t1 - local[25] = $t1 - local[26] = $t0 - $t0 = local[41] + local[69] = $t1 + local[65] = $t0 + $t0 = local[70] + $t1 = local[65] + $t0 = $t1 + local[65] = $t1 + local[70] = $t0 + $t0 = local[67] $t0 = $s7 - local[41] = $t0 - $t0 = local[40] - $t1 = local[26] + local[67] = $t0 + $t0 = local[39] + $t1 = local[70] $t0 = $t1 - local[26] = $t1 - local[40] = $t0 - $t0 = local[48] - $t1 = local[41] - $t2 = local[40] + local[70] = $t1 + local[39] = $t0 + $t0 = local[68] + $t1 = local[67] + $t2 = local[39] $t0 = LtS($t1 $t2 ) - local[40] = $t2 - local[41] = $t1 - local[48] = $t0 - $t0 = local[44] - $t1 = local[48] + local[39] = $t2 + local[67] = $t1 + local[68] = $t0 + $t0 = local[38] + $t1 = local[68] $t0 = $t1 - local[48] = $t1 - local[44] = $t0 - $t0 = local[44] - if0 $t0 goto :if160_else - local[44] = $t0 -if160_body: - $s5 = $s5 - $t0 = local[35] - $t0 = [$s5+0] - local[35] = $t0 + local[68] = $t1 + local[38] = $t0 + $t0 = local[29] + $t1 = local[38] + $t0 = $t1 + local[38] = $t1 + local[29] = $t0 + $t0 = local[29] + if0 $t0 goto :if330_else + local[29] = $t0 +if330_body: $t0 = local[34] - $t1 = local[35] - $t0 = [$t1+32] - local[35] = $t1 + $t0 = $s5 + local[34] = $t0 + $t0 = local[34] + $s5 = $t0 local[34] = $t0 + $t0 = local[37] + $t0 = [$s5+0] + local[37] = $t0 + $t0 = local[36] + $t1 = local[37] + $t0 = [$t1+32] + local[37] = $t1 + local[36] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1266,39 +1570,55 @@ if160_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[34] - $t1 = local[34] + $t0 = local[36] + $t1 = local[36] call $t1 - local[34] = $t1 - local[34] = $t0 + local[36] = $t1 + local[36] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[43] + $t0 = local[35] $t0 = $v0 - local[43] = $t0 - $t0 = local[36] - $t1 = local[43] + local[35] = $t0 + $t0 = local[31] + $t1 = local[35] $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 + local[35] = $t1 + local[31] = $t0 $t0 = local[30] - $t0 = [$s5+0] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 local[30] = $t0 + $t0 = local[30] + if0 $t0 goto :if335_else + local[30] = $t0 +if335_body: $t0 = local[33] - $t1 = local[30] - $t0 = [$t1+16] - local[30] = $t1 + $t0 = $s5 local[33] = $t0 + $t0 = local[32] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[32] = $t0 + $t0 = local[32] + $s4 = $t0 + local[32] = $t0 + $t0 = local[94] + $t0 = $s5 + local[94] = $t0 + $t0 = local[94] + $s5 = $t0 + local[94] = $t0 + $t5 = [$s5+0] + $t0 = local[24] + $t0 = [$t5+16] + local[24] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1306,54 +1626,75 @@ if164_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[33] - $t1 = local[33] + $t0 = local[24] + $t1 = local[24] call $t1 - local[33] = $t1 - local[33] = $t0 + local[24] = $t1 + local[24] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[31] + $t0 = local[28] $t0 = $v0 - local[31] = $t0 - $t0 = local[31] + local[28] = $t0 + $t0 = local[23] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 + local[23] = $t0 + $t0 = local[23] $s5 = $t0 - local[31] = $t0 - goto :if164_end -if164_else: - $s3 = 0 -if164_end: - goto :if160_end -if160_else: - $t0 = local[28] + local[23] = $t0 + goto :if335_end +if335_else: + $t0 = local[26] + $t0 = 0 + local[26] = $t0 + $t0 = local[25] $t1 = local[26] $t0 = $t1 local[26] = $t1 - local[28] = $t0 - $t0 = local[27] + local[25] = $t0 + $t0 = local[25] + $s3 = $t0 + local[25] = $t0 +if335_end: + goto :if330_end +if330_else: + $t0 = local[19] + $t1 = local[70] + $t0 = $t1 + local[70] = $t1 + local[19] = $t0 + $t0 = local[22] $t0 = $s7 - local[27] = $t0 - $t0 = local[32] - $t1 = local[28] - $t2 = local[27] + local[22] = $t0 + $t0 = local[20] + $t1 = local[19] + $t2 = local[22] $t0 = LtS($t1 $t2 ) - local[27] = $t2 - local[28] = $t1 - local[32] = $t0 - $t0 = local[29] - $t1 = local[32] + local[22] = $t2 + local[19] = $t1 + local[20] = $t0 + $t0 = local[21] + $t1 = local[20] $t0 = $t1 - local[32] = $t1 - local[29] = $t0 - $t0 = local[29] - if0 $t0 goto :if171_else - local[29] = $t0 -if171_body: - $s5 = $s5 + local[20] = $t1 + local[21] = $t0 + $t0 = local[44] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[44] = $t0 + $t0 = local[44] + if0 $t0 goto :if350_else + local[44] = $t0 +if350_body: + $s2 = $s5 + $s5 = $s2 $s2 = [$s5+0] $t3 = [$s2+28] local[8] = $t3 @@ -1372,10 +1713,14 @@ if171_body: $t8 = local[13] $s2 = $v0 $t3 = $s2 - if0 $t3 goto :if175_else -if175_body: - $s4 = $s5 - $s5 = $s5 + $s2 = $t3 + if0 $s2 goto :if355_else +if355_body: + $s2 = $s5 + $t3 = $s2 + $s4 = $t3 + $t3 = $s5 + $s5 = $t3 $t3 = [$s5+0] $s2 = [$t3+12] local[8] = $t3 @@ -1393,29 +1738,47 @@ if175_body: $t7 = local[12] $t8 = local[13] $t3 = $v0 - $s5 = $t3 - goto :if175_end -if175_else: - $s3 = 0 -if175_end: - goto :if171_end -if171_else: - $t0 = local[24] + $s2 = $t3 + $s5 = $s2 + goto :if355_end +if355_else: + $s2 = 0 + $t3 = $s2 + $s3 = $t3 +if355_end: + goto :if350_end +if350_else: + $t0 = local[43] $t0 = $s1 - local[24] = $t0 - $t0 = local[24] - if0 $t0 goto :if182_else - local[24] = $t0 -if182_body: - $s5 = $s5 - $t0 = local[22] + local[43] = $t0 + $t0 = local[42] + $t1 = local[43] + $t0 = $t1 + local[43] = $t1 + local[42] = $t0 + $t0 = local[41] + $t1 = local[42] + $t0 = $t1 + local[42] = $t1 + local[41] = $t0 + $t0 = local[41] + if0 $t0 goto :if370_else + local[41] = $t0 +if370_body: + $t0 = local[55] + $t0 = $s5 + local[55] = $t0 + $t0 = local[55] + $s5 = $t0 + local[55] = $t0 + $t0 = local[58] $t0 = [$s5+0] - local[22] = $t0 - $t0 = local[19] - $t1 = local[22] + local[58] = $t0 + $t0 = local[57] + $t1 = local[58] $t0 = [$t1+28] - local[22] = $t1 - local[19] = $t0 + local[58] = $t1 + local[57] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1423,37 +1786,59 @@ if182_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[19] - $t1 = local[19] + $t0 = local[57] + $t1 = local[57] call $t1 - local[19] = $t1 - local[19] = $t0 + local[57] = $t1 + local[57] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[23] + $t0 = local[56] $t0 = $v0 - local[23] = $t0 - $t0 = local[20] - $t1 = local[23] + local[56] = $t0 + $t0 = local[62] + $t1 = local[56] + $t0 = $t1 + local[56] = $t1 + local[62] = $t0 + $t0 = local[59] + $t1 = local[62] $t0 = Eq($t1 0 ) - local[23] = $t1 - local[20] = $t0 - $t0 = local[20] - $t6 = $t0 - local[20] = $t0 - $s5 = $s5 - $t0 = local[15] + local[62] = $t1 + local[59] = $t0 + $t0 = local[61] + $t1 = local[59] + $t0 = $t1 + local[59] = $t1 + local[61] = $t0 + $t0 = local[64] + $t1 = local[61] + $t0 = $t1 + local[61] = $t1 + local[64] = $t0 + $t0 = local[63] + $t1 = local[64] + $t0 = $t1 + local[64] = $t1 + local[63] = $t0 + $t0 = local[49] + $t0 = $s5 + local[49] = $t0 + $t0 = local[49] + $s5 = $t0 + local[49] = $t0 + $t0 = local[46] $t0 = [$s5+0] - local[15] = $t0 - $t0 = local[18] - $t1 = local[15] + local[46] = $t0 + $t0 = local[45] + $t1 = local[46] $t0 = [$t1+32] - local[15] = $t1 - local[18] = $t0 + local[46] = $t1 + local[45] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1461,61 +1846,116 @@ if182_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[18] - $t1 = local[18] + $t0 = local[45] + $t1 = local[45] call $t1 - local[18] = $t1 - local[18] = $t0 + local[45] = $t1 + local[45] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[16] + $t0 = local[50] $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] + local[50] = $t0 + $t0 = local[48] + $t1 = local[50] $t0 = $t1 - local[21] = $t1 - local[52] = $t0 + local[50] = $t1 + local[48] = $t0 + $t0 = local[60] + $t1 = local[48] + $t0 = Eq($t1 0 ) + local[48] = $t1 + local[60] = $t0 + $t0 = local[47] + $t1 = local[60] + $t0 = $t1 + local[60] = $t1 + local[47] = $t0 $t0 = local[52] - if0 $t0 goto :if183_else + $t1 = local[47] + $t0 = $t1 + local[47] = $t1 local[52] = $t0 -if183_body: + $t0 = local[51] + $t1 = local[52] + $t0 = $t1 + local[52] = $t1 + local[51] = $t0 + $t0 = local[54] + $t1 = local[63] + $t0 = Eq(1 $t1 ) + local[63] = $t1 + local[54] = $t0 $t0 = local[53] - $t0 = 1 + $t1 = local[51] + $t0 = Eq(1 $t1 ) + local[51] = $t1 local[53] = $t0 - goto :if183_end -if183_else: - $t0 = local[39] + $t0 = local[40] + $t1 = local[54] + $t2 = local[53] + $t0 = Eq($t1 $t2 ) + local[53] = $t2 + local[54] = $t1 + local[40] = $t0 + $t0 = local[84] + $t1 = local[40] + $t0 = $t1 + local[40] = $t1 + local[84] = $t0 + $t0 = local[86] + $t1 = local[84] + $t0 = $t1 + local[84] = $t1 + local[86] = $t0 + $t0 = local[86] + if0 $t0 goto :if373_else + local[86] = $t0 +if373_body: + $t0 = local[78] + $t0 = 1 + local[78] = $t0 + $t0 = local[76] + $t1 = local[78] + $t0 = $t1 + local[78] = $t1 + local[76] = $t0 + $t0 = local[85] + $t1 = local[76] + $t0 = $t1 + local[76] = $t1 + local[85] = $t0 + goto :if373_end +if373_else: + $t0 = local[80] + $t0 = $s6 + local[80] = $t0 + $t0 = local[88] $t0 = [$s6+0] - local[39] = $t0 - $t0 = local[38] + local[88] = $t0 + $t0 = local[87] $t0 = $s4 - local[38] = $t0 - $t0 = local[47] + local[87] = $t0 + $t0 = local[91] + $t1 = local[87] + $t0 = $t1 + local[87] = $t1 + local[91] = $t0 + $t0 = local[27] $t0 = $s5 - local[47] = $t0 - $t0 = local[39] - $t1 = local[39] + local[27] = $t0 + $t0 = local[27] + $t7 = $t0 + local[27] = $t0 + $t0 = local[88] + $t1 = local[88] $t0 = [$t1+56] - local[39] = $t1 - local[39] = $t0 + local[88] = $t1 + local[88] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1523,48 +1963,60 @@ if183_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $t0 = local[38] + $t0 = local[91] $a1 = $t0 - local[38] = $t0 - $t0 = local[47] - $a2 = $t0 - local[47] = $t0 - $t0 = local[39] - $t1 = local[39] + local[91] = $t0 + $a2 = $t7 + $t0 = local[88] + $t1 = local[88] call $t1 - local[39] = $t1 - local[39] = $t0 + local[88] = $t1 + local[88] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[37] + $t0 = local[82] $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: - $t0 = local[51] + local[82] = $t0 + $t0 = local[82] + $t6 = $t0 + local[82] = $t0 + $t0 = local[85] + $t0 = $t6 + local[85] = $t0 +if373_end: + goto :if370_end +if370_else: + $t0 = local[93] + $t0 = $s6 + local[93] = $t0 + $t0 = local[15] $t0 = [$s6+0] - local[51] = $t0 - $t0 = local[49] + local[15] = $t0 + $t0 = local[16] $t0 = $s4 - local[49] = $t0 - $t0 = local[42] + local[16] = $t0 + $t0 = local[17] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[17] = $t0 + $t0 = local[18] $t0 = $s5 - local[42] = $t0 - $t0 = local[51] - $t1 = local[51] + local[18] = $t0 + $t0 = local[92] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[92] = $t0 + $t0 = local[15] + $t1 = local[15] $t0 = [$t1+56] - local[51] = $t1 - local[51] = $t0 + local[15] = $t1 + local[15] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1572,44 +2024,77 @@ if182_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $t0 = local[49] + $t0 = local[17] $a1 = $t0 - local[49] = $t0 - $t0 = local[42] + local[17] = $t0 + $t0 = local[92] $a2 = $t0 - local[42] = $t0 - $t0 = local[51] - $t1 = local[51] + local[92] = $t0 + $t0 = local[15] + $t1 = local[15] call $t1 - local[51] = $t1 - local[51] = $t0 + local[15] = $t1 + local[15] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[46] - $t0 = $v0 - local[46] = $t0 - $t0 = local[53] - $t1 = local[46] + $t4 = $v0 + $t0 = local[89] + $t0 = $t4 + local[89] = $t0 + $t0 = local[85] + $t1 = local[89] $t0 = $t1 - local[46] = $t1 - local[53] = $t0 -if182_end: - $t0 = local[14] + local[89] = $t1 + local[85] = $t0 +if370_end: + $t0 = local[90] $t0 = 1 + local[90] = $t0 + $t0 = local[75] + $t1 = local[90] + $t0 = $t1 + local[90] = $t1 + local[75] = $t0 + $t0 = local[14] + $t1 = local[75] + $t0 = $t1 + local[75] = $t1 local[14] = $t0 - $s3 = 0 -if171_end: -if160_end: - $s1 = 0 - goto :while155_test -while155_end: + $t0 = local[77] + $t0 = 0 + local[77] = $t0 + $t0 = local[79] + $t1 = local[77] + $t0 = $t1 + local[77] = $t1 + local[79] = $t0 + $t0 = local[79] + $s3 = $t0 + local[79] = $t0 +if350_end: +if330_end: + $t0 = local[81] + $t0 = 0 + local[81] = $t0 + $t0 = local[83] + $t1 = local[81] + $t0 = $t1 + local[81] = $t1 + local[83] = $t0 + $t0 = local[83] + $s1 = $t0 + local[83] = $t0 + goto :while321_test +while321_end: $t0 = local[14] $t4 = $t0 local[14] = $t0 + $t5 = $t4 + $t4 = $t5 $v0 = $t4 $s0 = local[0] $s1 = local[1] @@ -1632,7 +2117,8 @@ func Tree_Remove [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = $a2 - $s7 = $s7 + $s4 = $s7 + $s7 = $s4 $s4 = [$s7+0] $s3 = [$s4+32] local[8] = $t3 @@ -1651,12 +2137,16 @@ func Tree_Remove [in 0, out 0, local 14] $t8 = local[13] $s4 = $v0 $s3 = $s4 - if0 $s3 goto :if206_else -if206_body: - $s3 = [$s5+0] - $s4 = $s6 - $s2 = $s7 - $s3 = [$s3+64] + $s4 = $s3 + if0 $s4 goto :if423_else +if423_body: + $s4 = $s5 + $s4 = [$s5+0] + $s3 = $s6 + $s2 = $s3 + $s3 = $s7 + $s1 = $s3 + $s4 = [$s4+64] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1664,22 +2154,24 @@ if206_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s4 - $a2 = $s2 - call $s3 + $a1 = $s2 + $a2 = $s1 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s2 = $s1 - goto :if206_end -if206_else: - $s7 = $s7 + $s3 = $v0 + $s1 = $s3 + $s3 = $s1 + goto :if423_end +if423_else: + $s1 = $s7 + $s7 = $s1 $s1 = [$s7+0] - $s4 = [$s1+28] + $s2 = [$s1+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1687,7 +2179,7 @@ if206_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1695,13 +2187,17 @@ if206_else: $t7 = local[12] $t8 = local[13] $s1 = $v0 - $s4 = $s1 - if0 $s4 goto :if214_else -if214_body: - $s4 = [$s5+0] - $s1 = $s6 - $s3 = $s7 - $s4 = [$s4+60] + $s2 = $s1 + $s1 = $s2 + if0 $s1 goto :if437_else +if437_body: + $s1 = $s5 + $s1 = [$s5+0] + $s2 = $s6 + $s4 = $s2 + $s2 = $s7 + $s0 = $s2 + $s1 = [$s1+60] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1709,22 +2205,24 @@ if214_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s1 - $a2 = $s3 - call $s4 + $a1 = $s4 + $a2 = $s0 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s2 = $s0 - goto :if214_end -if214_else: - $s7 = $s7 + $s2 = $v0 + $s0 = $s2 + $s3 = $s0 + goto :if437_end +if437_else: + $s0 = $s7 + $s7 = $s0 $s0 = [$s7+0] - $s3 = [$s0+20] + $s2 = [$s0+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1732,7 +2230,7 @@ if214_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1740,10 +2238,12 @@ if214_else: $t7 = local[12] $t8 = local[13] $s0 = $v0 - $s3 = $s0 - $s6 = $s6 - $s0 = [$s6+0] - $s7 = [$s0+16] + $s2 = $s0 + $s0 = $s2 + $s2 = $s6 + $s6 = $s2 + $s2 = [$s6+0] + $s7 = [$s2+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1758,10 +2258,12 @@ if214_else: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s7 = $s0 - $s0 = [$s7+0] - $s1 = [$s0+20] + $s2 = $v0 + $s7 = $s2 + $s2 = $s7 + $s7 = $s2 + $s2 = [$s7+0] + $s4 = [$s2+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1769,19 +2271,23 @@ if214_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] - $s0 = $v0 - $s1 = $s0 - $s0 = [$s5+0] - $s7 = $s3 - $s3 = $s1 - $s0 = [$s0+44] + $s2 = $v0 + $s4 = $s2 + $s2 = $s4 + $s4 = $s5 + $s4 = [$s5+0] + $s7 = $s0 + $s0 = $s7 + $s7 = $s2 + $s2 = $s7 + $s4 = [$s4+44] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1789,23 +2295,26 @@ if214_else: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s7 - $a2 = $s3 - call $s0 + $a1 = $s0 + $a2 = $s2 + call $s4 $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 :if232_else -if232_body: - $s6 = $s6 - $s3 = [$s6+0] - $s1 = [$s3+8] - $s3 = [$s5+100] + $s7 = $v0 + $s2 = $s7 + $s7 = $s2 + if0 $s7 goto :if467_else +if467_body: + $s7 = $s6 + $s6 = $s7 + $s7 = [$s6+0] + $s2 = [$s7+8] + $s7 = [$s5+100] + $s0 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1813,8 +2322,8 @@ if232_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s3 - call $s1 + $a1 = $s0 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1822,11 +2331,14 @@ if232_body: $t7 = local[12] $t8 = local[13] $s7 = $v0 - $s2 = $s7 - $s6 = $s6 - $s7 = [$s6+0] - $s3 = [$s7+36] - $s7 = 0 + $s0 = $s7 + $s3 = $s0 + $s0 = $s6 + $s6 = $s0 + $s0 = [$s6+0] + $s7 = [$s0+36] + $s0 = 0 + $s2 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1834,22 +2346,25 @@ if232_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 - call $s3 + $a1 = $s2 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s2 = $s1 - goto :if232_end -if232_else: - $s6 = $s6 - $s1 = [$s6+0] - $s7 = [$s1+4] - $s1 = [$s5+100] + $s0 = $v0 + $s2 = $s0 + $s3 = $s2 + goto :if467_end +if467_else: + $s2 = $s6 + $s6 = $s2 + $s2 = [$s6+0] + $s0 = [$s2+4] + $s2 = [$s5+100] + $s5 = $s2 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1857,20 +2372,23 @@ if232_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s1 - call $s7 + $a1 = $s5 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s2 = $s5 - $s6 = $s6 + $s2 = $v0 + $s5 = $s2 + $s3 = $s5 + $s5 = $s6 + $s6 = $s5 $s5 = [$s6+0] - $s1 = [$s5+40] + $s2 = [$s5+40] $s5 = 0 + $s0 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1878,21 +2396,24 @@ if232_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s5 - call $s1 + $a1 = $s0 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s2 = $s7 -if232_end: -if214_end: -if206_end: - $s7 = 1 - $v0 = $s7 + $s5 = $v0 + $s0 = $s5 + $s3 = $s0 +if467_end: +if437_end: +if423_end: + $s0 = 1 + $s3 = $s0 + $s0 = $s3 + $v0 = $s0 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1902,7 +2423,7 @@ if206_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveRight [in 0, out 0, local 23] +func Tree_RemoveRight [in 0, out 0, local 34] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1914,12 +2435,17 @@ func Tree_RemoveRight [in 0, out 0, local 23] local[15] = $a0 local[14] = $a1 $s7 = $a2 -while254_test: - $s7 = $s7 - $s5 = [$s7+0] - $t0 = local[18] - $t0 = [$s5+28] - local[18] = $t0 +while507_test: + $s4 = $s7 + $s7 = $s4 + $t0 = local[29] + $t0 = [$s7+0] + local[29] = $t0 + $t0 = local[28] + $t1 = local[29] + $t0 = [$t1+28] + local[29] = $t1 + local[28] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1927,41 +2453,60 @@ while254_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $t0 = local[18] - $t1 = local[18] + $t0 = local[28] + $t1 = local[28] call $t1 - local[18] = $t1 - local[18] = $t0 + local[28] = $t1 + local[28] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[16] + $t0 = local[27] $t0 = $v0 - local[16] = $t0 - $t0 = local[17] - $t1 = local[16] + local[27] = $t0 + $t0 = local[31] + $t1 = local[27] $t0 = $t1 - local[16] = $t1 - local[17] = $t0 - $t0 = local[17] - if0 $t0 goto :while254_end - local[17] = $t0 -while254_body: - $s7 = $s7 - $t0 = local[22] - $t0 = [$s7+0] - local[22] = $t0 + local[27] = $t1 + local[31] = $t0 + $t0 = local[30] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[30] = $t0 + $t0 = local[30] + if0 $t0 goto :while507_end + local[30] = $t0 +while507_body: $t0 = local[21] - $t1 = local[22] - $t0 = [$t1+24] - local[22] = $t1 + $t0 = $s7 + local[21] = $t0 + $t0 = local[21] + $s7 = $t0 local[21] = $t0 - $s7 = $s7 - $t6 = [$s7+0] - $s3 = [$t6+12] + $t0 = local[24] + $t0 = [$s7+0] + local[24] = $t0 + $t0 = local[23] + $t1 = local[24] + $t0 = [$t1+24] + local[24] = $t1 + local[23] = $t0 + $t0 = local[20] + $t0 = $s7 + local[20] = $t0 + $t0 = local[20] + $s7 = $t0 + local[20] = $t0 + $t0 = local[19] + $t0 = [$s7+0] + local[19] = $t0 + $t0 = local[19] + $s6 = [$t0+12] + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1969,33 +2514,43 @@ while254_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s4 = $t5 - $s1 = [$s4+0] - $s2 = [$s1+20] + $t0 = local[17] + $t0 = $v0 + local[17] = $t0 + $t0 = local[17] + $t3 = $t0 + local[17] = $t0 + $s5 = $t3 + $t6 = $s5 + $t7 = [$t6+0] + $t4 = [$t7+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s4 - call $s2 + $a0 = $t6 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $t3 = $s0 + $t0 = local[18] + $t0 = $v0 + local[18] = $t0 + $t0 = local[18] + $t5 = $t0 + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2003,32 +2558,46 @@ while254_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $t3 - $t0 = local[21] - $t1 = local[21] + $a1 = $t5 + $t0 = local[23] + $t1 = local[23] call $t1 - local[21] = $t1 - local[21] = $t0 + 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[19] + $t0 = local[32] $t0 = $v0 - local[19] = $t0 - $t0 = local[20] - $t1 = local[19] - $t0 = $t1 - local[19] = $t1 - local[20] = $t0 + local[32] = $t0 + $t0 = local[32] + $s2 = $t0 + local[32] = $t0 + $t0 = local[33] + $t0 = $s2 + local[33] = $t0 + $s3 = $s7 + $s0 = $s3 $t0 = local[14] - $t0 = $s7 + $t0 = $s0 local[14] = $t0 - $s7 = $s7 - $s6 = [$s7+0] - $t7 = [$s6+12] + $t0 = local[26] + $t0 = $s7 + local[26] = $t0 + $t0 = local[26] + $s7 = $t0 + local[26] = $t0 + $t0 = local[25] + $t0 = [$s7+0] + local[25] = $t0 + $t0 = local[16] + $t1 = local[25] + $t0 = [$t1+12] + local[25] = $t1 + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2036,21 +2605,31 @@ while254_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $t7 + $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] - $t4 = $v0 - $s7 = $t4 - goto :while254_test -while254_end: + $s1 = $v0 + $t0 = local[22] + $t0 = $s1 + local[22] = $t0 + $t0 = local[22] + $s7 = $t0 + local[22] = $t0 + goto :while507_test +while507_end: $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $s5 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $s5 local[14] = $t0 $t0 = local[14] $s5 = [$t0+0] @@ -2059,6 +2638,7 @@ while254_end: $t0 = local[15] $s5 = [$t0+100] local[15] = $t0 + $t3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2068,7 +2648,7 @@ while254_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $s5 + $a1 = $t3 call $s6 $t3 = local[8] $t4 = local[9] @@ -2076,20 +2656,23 @@ while254_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t3 = $v0 - $t0 = local[20] + $s5 = $v0 + $t3 = $s5 + $t0 = local[33] $t0 = $t3 - local[20] = $t0 + local[33] = $t0 $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $t3 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $t3 local[14] = $t0 $t0 = local[14] $t3 = [$t0+0] local[14] = $t0 $s5 = [$t3+40] $t3 = 0 + $s6 = $t3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2099,7 +2682,7 @@ while254_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $t3 + $a1 = $s6 call $s5 $t3 = local[8] $t4 = local[9] @@ -2107,11 +2690,14 @@ while254_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $t0 = local[20] + $t3 = $v0 + $s6 = $t3 + $t0 = local[33] $t0 = $s6 - local[20] = $t0 + local[33] = $t0 $s6 = 1 + $t3 = $s6 + $s6 = $t3 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -2122,7 +2708,7 @@ while254_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveLeft [in 0, out 0, local 23] +func Tree_RemoveLeft [in 0, out 0, local 34] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -2134,12 +2720,17 @@ func Tree_RemoveLeft [in 0, out 0, local 23] local[15] = $a0 local[14] = $a1 $s7 = $a2 -while282_test: - $s7 = $s7 - $s5 = [$s7+0] - $t0 = local[18] - $t0 = [$s5+32] - local[18] = $t0 +while554_test: + $s4 = $s7 + $s7 = $s4 + $t0 = local[29] + $t0 = [$s7+0] + local[29] = $t0 + $t0 = local[28] + $t1 = local[29] + $t0 = [$t1+32] + local[29] = $t1 + local[28] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2147,41 +2738,60 @@ while282_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $t0 = local[18] - $t1 = local[18] + $t0 = local[28] + $t1 = local[28] call $t1 - local[18] = $t1 - local[18] = $t0 + local[28] = $t1 + local[28] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[16] + $t0 = local[27] $t0 = $v0 - local[16] = $t0 - $t0 = local[17] - $t1 = local[16] + local[27] = $t0 + $t0 = local[31] + $t1 = local[27] $t0 = $t1 - local[16] = $t1 - local[17] = $t0 - $t0 = local[17] - if0 $t0 goto :while282_end - local[17] = $t0 -while282_body: - $s7 = $s7 - $t0 = local[22] - $t0 = [$s7+0] - local[22] = $t0 + local[27] = $t1 + local[31] = $t0 + $t0 = local[30] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[30] = $t0 + $t0 = local[30] + if0 $t0 goto :while554_end + local[30] = $t0 +while554_body: $t0 = local[21] - $t1 = local[22] - $t0 = [$t1+24] - local[22] = $t1 + $t0 = $s7 local[21] = $t0 - $s7 = $s7 - $t6 = [$s7+0] - $s3 = [$t6+16] + $t0 = local[21] + $s7 = $t0 + local[21] = $t0 + $t0 = local[24] + $t0 = [$s7+0] + local[24] = $t0 + $t0 = local[23] + $t1 = local[24] + $t0 = [$t1+24] + local[24] = $t1 + local[23] = $t0 + $t0 = local[20] + $t0 = $s7 + local[20] = $t0 + $t0 = local[20] + $s7 = $t0 + local[20] = $t0 + $t0 = local[19] + $t0 = [$s7+0] + local[19] = $t0 + $t0 = local[19] + $s6 = [$t0+16] + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2189,33 +2799,43 @@ while282_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s4 = $t5 - $s1 = [$s4+0] - $s2 = [$s1+20] + $t0 = local[17] + $t0 = $v0 + local[17] = $t0 + $t0 = local[17] + $t3 = $t0 + local[17] = $t0 + $s5 = $t3 + $t6 = $s5 + $t7 = [$t6+0] + $t4 = [$t7+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s4 - call $s2 + $a0 = $t6 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $t3 = $s0 + $t0 = local[18] + $t0 = $v0 + local[18] = $t0 + $t0 = local[18] + $t5 = $t0 + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2223,32 +2843,46 @@ while282_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $t3 - $t0 = local[21] - $t1 = local[21] + $a1 = $t5 + $t0 = local[23] + $t1 = local[23] call $t1 - local[21] = $t1 - local[21] = $t0 + 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[19] + $t0 = local[32] $t0 = $v0 - local[19] = $t0 - $t0 = local[20] - $t1 = local[19] - $t0 = $t1 - local[19] = $t1 - local[20] = $t0 + local[32] = $t0 + $t0 = local[32] + $s2 = $t0 + local[32] = $t0 + $t0 = local[33] + $t0 = $s2 + local[33] = $t0 + $s3 = $s7 + $s0 = $s3 $t0 = local[14] - $t0 = $s7 + $t0 = $s0 local[14] = $t0 - $s7 = $s7 - $s6 = [$s7+0] - $t7 = [$s6+16] + $t0 = local[26] + $t0 = $s7 + local[26] = $t0 + $t0 = local[26] + $s7 = $t0 + local[26] = $t0 + $t0 = local[25] + $t0 = [$s7+0] + local[25] = $t0 + $t0 = local[16] + $t1 = local[25] + $t0 = [$t1+16] + local[25] = $t1 + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2256,21 +2890,31 @@ while282_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $t7 + $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] - $t4 = $v0 - $s7 = $t4 - goto :while282_test -while282_end: + $s1 = $v0 + $t0 = local[22] + $t0 = $s1 + local[22] = $t0 + $t0 = local[22] + $s7 = $t0 + local[22] = $t0 + goto :while554_test +while554_end: $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $s5 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $s5 local[14] = $t0 $t0 = local[14] $s5 = [$t0+0] @@ -2279,6 +2923,7 @@ while282_end: $t0 = local[15] $s5 = [$t0+100] local[15] = $t0 + $t3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2288,7 +2933,7 @@ while282_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $s5 + $a1 = $t3 call $s6 $t3 = local[8] $t4 = local[9] @@ -2296,20 +2941,23 @@ while282_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t3 = $v0 - $t0 = local[20] + $s5 = $v0 + $t3 = $s5 + $t0 = local[33] $t0 = $t3 - local[20] = $t0 + local[33] = $t0 $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $t3 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $t3 local[14] = $t0 $t0 = local[14] $t3 = [$t0+0] local[14] = $t0 $s5 = [$t3+36] $t3 = 0 + $s6 = $t3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2319,7 +2967,7 @@ while282_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $t3 + $a1 = $s6 call $s5 $t3 = local[8] $t4 = local[9] @@ -2327,11 +2975,14 @@ while282_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $t0 = local[20] + $t3 = $v0 + $s6 = $t3 + $t0 = local[33] $t0 = $s6 - local[20] = $t0 + local[33] = $t0 $s6 = 1 + $t3 = $s6 + $s6 = $t3 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -2342,7 +2993,7 @@ while282_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Search [in 0, out 0, local 27] +func Tree_Search [in 0, out 0, local 43] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -2354,23 +3005,44 @@ func Tree_Search [in 0, out 0, local 27] $s6 = $a0 $s7 = $a1 $s5 = $s6 + $s6 = $s5 + $s5 = $s6 $s6 = 1 + $s4 = $s6 + $s6 = $s4 + $s4 = 0 + $s3 = $s4 $t0 = local[14] - $t0 = 0 + $t0 = $s3 local[14] = $t0 -while310_test: +while607_test: $s3 = $s6 - if0 $s3 goto :while310_end -while310_body: - $s5 = $s5 - $t0 = local[24] + $t0 = local[36] + $t0 = $s3 + local[36] = $t0 + $t0 = local[26] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[26] = $t0 + $t0 = local[26] + if0 $t0 goto :while607_end + local[26] = $t0 +while607_body: + $t0 = local[28] + $t0 = $s5 + local[28] = $t0 + $t0 = local[28] + $s5 = $t0 + local[28] = $t0 + $t0 = local[18] $t0 = [$s5+0] - local[24] = $t0 - $t0 = local[23] - $t1 = local[24] + local[18] = $t0 + $t0 = local[17] + $t1 = local[18] $t0 = [$t1+20] - local[24] = $t1 - local[23] = $t0 + local[18] = $t1 + local[17] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2378,58 +3050,57 @@ while310_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[23] - $t1 = local[23] + $t0 = local[17] + $t1 = local[17] call $t1 - local[23] = $t1 - local[23] = $t0 + local[17] = $t1 + local[17] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[21] + $t0 = local[30] $t0 = $v0 - local[21] = $t0 + local[30] = $t0 + $t0 = local[20] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[20] = $t0 $t0 = local[22] - $t1 = local[21] + $t1 = local[20] $t0 = $t1 - local[21] = $t1 + local[20] = $t1 local[22] = $t0 - $t0 = local[20] - $t0 = $s7 - local[20] = $t0 - $t0 = local[19] + $t4 = $s7 + $t0 = local[16] $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 + local[16] = $t0 + $t0 = local[42] + $t1 = local[16] + $t0 = LtS($t4 $t1 ) + local[16] = $t1 + local[42] = $t0 $t0 = local[15] - $t1 = local[18] + $t1 = local[42] $t0 = $t1 - local[18] = $t1 + local[42] = $t1 local[15] = $t0 $t0 = local[15] - if0 $t0 goto :if315_else + $t7 = $t0 local[15] = $t0 -if315_body: - $s5 = $s5 - $t0 = local[17] - $t0 = [$s5+0] - local[17] = $t0 - $t0 = local[16] - $t1 = local[17] - $t0 = [$t1+32] - local[17] = $t1 - local[16] = $t0 + if0 $t7 goto :if616_else +if616_body: + $t5 = $s5 + $s5 = $t5 + $t6 = [$s5+0] + $t0 = local[40] + $t0 = [$t6+32] + local[40] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2437,32 +3108,44 @@ if315_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[16] - $t1 = local[16] + $t0 = local[40] + $t1 = local[40] call $t1 - local[16] = $t1 - local[16] = $t0 + local[40] = $t1 + local[40] = $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[25] - $t4 = $t0 - local[25] = $t0 - if0 $t4 goto :if319_else -if319_body: - $s5 = $s5 - $t0 = local[26] + $s0 = $v0 + $t0 = local[39] + $t0 = $s0 + local[39] = $t0 + $t0 = local[21] + $t1 = local[39] + $t0 = $t1 + local[39] = $t1 + local[21] = $t0 + $t0 = local[21] + if0 $t0 goto :if621_else + local[21] = $t0 +if621_body: + $t0 = local[33] + $t0 = $s5 + local[33] = $t0 + $t0 = local[33] + $s5 = $t0 + local[33] = $t0 + $t0 = local[38] $t0 = [$s5+0] - local[26] = $t0 - $t0 = local[26] - $s0 = [$t0+16] - local[26] = $t0 + local[38] = $t0 + $t0 = local[35] + $t1 = local[38] + $t0 = [$t1+16] + local[38] = $t1 + local[35] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2470,30 +3153,67 @@ if319_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s0 + $t0 = local[35] + $t1 = local[35] + call $t1 + local[35] = $t1 + local[35] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s5 = $t5 - goto :if319_end -if319_else: - $s6 = 0 -if319_end: - goto :if315_end -if315_else: - $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 + $t0 = local[34] + $t0 = $v0 + local[34] = $t0 + $t0 = local[25] + $t1 = local[34] + $t0 = $t1 + local[34] = $t1 + local[25] = $t0 + $t0 = local[25] + $s5 = $t0 + local[25] = $t0 + goto :if621_end +if621_else: + $t0 = local[23] + $t0 = 0 + local[23] = $t0 + $t0 = local[31] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[31] = $t0 + $t0 = local[31] + $s6 = $t0 + local[31] = $t0 +if621_end: + goto :if616_end +if616_else: + $t0 = local[19] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[19] = $t0 + $s1 = $s7 + $t0 = local[29] + $t1 = local[19] + $t0 = LtS($t1 $s1 ) + local[19] = $t1 + local[29] = $t0 + $t0 = local[29] + $s2 = $t0 + local[29] = $t0 + $t0 = local[41] + $t0 = $s2 + local[41] = $t0 + $t0 = local[41] + if0 $t0 goto :if634_else + local[41] = $t0 +if634_body: + $s4 = $s5 + $s5 = $s4 $s4 = [$s5+0] $t3 = [$s4+28] local[8] = $t3 @@ -2512,11 +3232,13 @@ if326_body: $t8 = local[13] $s4 = $v0 $t3 = $s4 - if0 $t3 goto :if330_else -if330_body: - $s5 = $s5 - $t3 = [$s5+0] - $s4 = [$t3+12] + $s4 = $t3 + if0 $s4 goto :if639_else +if639_body: + $s4 = $s5 + $s5 = $s4 + $s4 = [$s5+0] + $t3 = [$s4+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2524,32 +3246,57 @@ if330_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s4 + call $t3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t3 = $v0 + $s4 = $v0 + $t3 = $s4 $s5 = $t3 - goto :if330_end -if330_else: - $s6 = 0 -if330_end: - goto :if326_end -if326_else: - $t0 = local[14] + goto :if639_end +if639_else: + $t3 = 0 + $s4 = $t3 + $s6 = $s4 +if639_end: + goto :if634_end +if634_else: + $t0 = local[37] $t0 = 1 + local[37] = $t0 + $t0 = local[27] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[27] = $t0 + $t0 = local[14] + $t1 = local[27] + $t0 = $t1 + local[27] = $t1 local[14] = $t0 - $s6 = 0 -if326_end: -if315_end: - goto :while310_test -while310_end: + $t0 = local[24] + $t0 = 0 + local[24] = $t0 + $t0 = local[32] + $t1 = local[24] + $t0 = $t1 + local[24] = $t1 + local[32] = $t0 + $t0 = local[32] + $s6 = $t0 + local[32] = $t0 +if634_end: +if616_end: + goto :while607_test +while607_end: $t0 = local[14] $t4 = $t0 local[14] = $t0 + $t5 = $t4 + $t4 = $t5 $v0 = $t4 $s0 = local[0] $s1 = local[1] @@ -2569,10 +3316,14 @@ func Tree_Print [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $s6 - $s5 = [$s6+0] - $s4 = $s7 + $s7 = $a0 + $s6 = $s7 + $s5 = $s6 + $s6 = $s5 + $s5 = $s7 + $s5 = [$s7+0] + $s4 = $s6 + $s6 = $s4 $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 @@ -2580,8 +3331,8 @@ func Tree_Print [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s4 + $a0 = $s7 + $a1 = $s6 call $s5 $t3 = local[8] $t4 = local[9] @@ -2589,9 +3340,12 @@ func Tree_Print [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s4 = $s7 + $s4 = $v0 + $s6 = $s4 + $s4 = $s6 $s4 = 1 + $s6 = $s4 + $s4 = $s6 $v0 = $s4 $s0 = local[0] $s1 = local[1] @@ -2613,7 +3367,8 @@ func Tree_RecPrint [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 - $s7 = $s7 + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] $s4 = [$s5+32] local[8] = $t3 @@ -2632,12 +3387,15 @@ func Tree_RecPrint [in 0, out 0, local 14] $t8 = local[13] $s5 = $v0 $s4 = $s5 - if0 $s4 goto :if342_else -if342_body: - $s4 = [$s6+0] - $s7 = $s7 - $s5 = [$s7+0] - $s3 = [$s5+16] + $s5 = $s4 + if0 $s5 goto :if670_else +if670_body: + $s5 = $s6 + $s5 = [$s6+0] + $s4 = $s7 + $s7 = $s4 + $s4 = [$s7+0] + $s3 = [$s4+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2652,9 +3410,9 @@ if342_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 - $s4 = [$s4+76] + $s4 = $v0 + $s3 = $s4 + $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2663,22 +3421,26 @@ if342_body: local[13] = $t8 $a0 = $s6 $a1 = $s3 - call $s4 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 - goto :if342_end -if342_else: + $s4 = $v0 + $s3 = $s4 + $s4 = $s3 + goto :if670_end +if670_else: $s3 = 1 -if342_end: - $s7 = $s7 + $s5 = $s3 + $s4 = $s5 +if670_end: + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] - $s4 = [$s5+20] + $s3 = [$s5+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2686,7 +3448,7 @@ if342_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -2694,11 +3456,13 @@ if342_end: $t7 = local[12] $t8 = local[13] $s5 = $v0 - $s4 = $s5 - PrintIntS($s4 ) - $s7 = $s7 - $s4 = [$s7+0] - $s5 = [$s4+28] + $s3 = $s5 + $s5 = $s3 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s3 = [$s5+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2706,21 +3470,24 @@ if342_end: 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] - $s4 = $v0 - $s5 = $s4 - if0 $s5 goto :if356_else -if356_body: + $s5 = $v0 + $s3 = $s5 + $s5 = $s3 + if0 $s5 goto :if693_else +if693_body: + $s5 = $s6 $s5 = [$s6+0] - $s7 = $s7 - $s4 = [$s7+0] - $s2 = [$s4+12] + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s2 = [$s3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2735,8 +3502,8 @@ if356_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s2 = $s4 + $s3 = $v0 + $s2 = $s3 $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 @@ -2753,13 +3520,18 @@ if356_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - goto :if356_end -if356_else: - $s3 = 1 -if356_end: + $s3 = $v0 + $s2 = $s3 + $s4 = $s2 + goto :if693_end +if693_else: + $s2 = 1 + $s3 = $s2 + $s4 = $s3 +if693_end: $s3 = 1 + $s4 = $s3 + $s3 = $s4 $v0 = $s3 $s0 = local[0] $s1 = local[1] diff --git a/output/BubbleSort.s b/output/BubbleSort.s new file mode 100644 index 0000000..2a220bd --- /dev/null +++ b/output/BubbleSort.s @@ -0,0 +1,1102 @@ +.data +functable_BBS: + BBS_Start + BBS_Sort + BBS_Print + BBS_Init +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 24 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_BBS + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 10 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +BBS_Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + lw $s5 0($s6) + move $s4 $s7 + move $s7 $s4 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s7 $s4 + move $s4 $s7 + move $s7 $s6 + lw $s7 0($s6) + lw $s7 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s7 $s5 + move $s4 $s7 + li $s7 99999 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + move $s7 $s6 + lw $s7 0($s6) + lw $s7 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s7 $s5 + move $s4 $s7 + move $s7 $s6 + lw $s7 0($s6) + lw $s7 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s7 $s5 + move $s4 $s7 + li $s7 0 + move $s4 $s7 + move $s7 $s4 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +BBS_Sort: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 344 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + sw $a0 -160($fp) + lw $t0 -160($fp) + lw $s6 0($t0) + sw $t0 -160($fp) + li $s5 1 + move $a0 $s6 + move $t9 $s5 + sub $s4 $a0 $t9 + move $s5 $s4 + lw $t0 -156($fp) + move $t0 $s5 + sw $t0 -156($fp) + li $s5 0 + li $s6 1 + move $a0 $s5 + move $t9 $s6 + sub $s3 $a0 $t9 + move $s6 $s3 + lw $t0 -152($fp) + move $t0 $s6 + sw $t0 -152($fp) +while41_test: + lw $t0 -148($fp) + lw $t1 -152($fp) + move $t0 $t1 + sw $t1 -152($fp) + sw $t0 -148($fp) + lw $t0 -108($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -108($fp) + lw $t0 -104($fp) + lw $t1 -148($fp) + lw $t2 -108($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -108($fp) + sw $t1 -148($fp) + sw $t0 -104($fp) + lw $t0 -92($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -88($fp) + lw $t0 -88($fp) + beqz $t0 while41_end + sw $t0 -88($fp) +while41_body: + lw $t0 -96($fp) + li $t0 1 + sw $t0 -96($fp) + lw $t0 -80($fp) + lw $t1 -96($fp) + move $t0 $t1 + sw $t1 -96($fp) + sw $t0 -80($fp) + lw $t0 -100($fp) + lw $t1 -80($fp) + move $t0 $t1 + sw $t1 -80($fp) + sw $t0 -100($fp) +while49_test: + lw $t0 -84($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -84($fp) + lw $t0 -128($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -128($fp) + lw $t0 -72($fp) + li $t0 1 + sw $t0 -72($fp) + lw $t0 -120($fp) + lw $t1 -128($fp) + lw $t2 -72($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -72($fp) + sw $t1 -128($fp) + sw $t0 -120($fp) + lw $t0 -112($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -112($fp) + lw $t0 -140($fp) + lw $t1 -112($fp) + move $t0 $t1 + sw $t1 -112($fp) + sw $t0 -140($fp) + lw $t0 -76($fp) + lw $t1 -84($fp) + lw $t2 -140($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -140($fp) + sw $t1 -84($fp) + sw $t0 -76($fp) + lw $t0 -144($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -144($fp) + lw $t0 -136($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -136($fp) + lw $t0 -136($fp) + beqz $t0 while49_end + sw $t0 -136($fp) +while49_body: + lw $t0 -256($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -256($fp) + lw $t0 -192($fp) + li $t0 1 + sw $t0 -192($fp) + lw $t0 -260($fp) + lw $t1 -256($fp) + lw $t2 -192($fp) + move $a0 $t1 + move $t9 $t2 + sub $t0 $a0 $t9 + sw $t2 -192($fp) + sw $t1 -256($fp) + sw $t0 -260($fp) + lw $t0 -236($fp) + lw $t1 -260($fp) + move $t0 $t1 + sw $t1 -260($fp) + sw $t0 -236($fp) + lw $t0 -288($fp) + lw $t1 -236($fp) + move $t0 $t1 + sw $t1 -236($fp) + sw $t0 -288($fp) + lw $t0 -208($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -208($fp) + lw $t0 -244($fp) + lw $t1 -208($fp) + move $t0 $t1 + sw $t1 -208($fp) + sw $t0 -244($fp) + lw $t0 -220($fp) + lw $t1 -288($fp) + move $t0 $t1 + sw $t1 -288($fp) + sw $t0 -220($fp) + lw $t0 -204($fp) + lw $t1 -220($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -220($fp) + sw $t0 -204($fp) + lw $t0 -204($fp) + lw $t1 -204($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -204($fp) + sw $t0 -204($fp) + lw $t0 -204($fp) + lw $t1 -244($fp) + lw $t2 -204($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -204($fp) + sw $t1 -244($fp) + sw $t0 -204($fp) + lw $t0 -252($fp) + lw $t1 -204($fp) + lw $t0 0($t1) + sw $t1 -204($fp) + sw $t0 -252($fp) + lw $t0 -216($fp) + lw $t1 -252($fp) + move $t0 $t1 + sw $t1 -252($fp) + sw $t0 -216($fp) + lw $t0 -228($fp) + lw $t1 -216($fp) + move $t0 $t1 + sw $t1 -216($fp) + sw $t0 -228($fp) + lw $t0 -164($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -164($fp) + lw $t0 -164($fp) + move $t6 $t0 + sw $t0 -164($fp) + lw $t0 -172($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -172($fp) + lw $t0 -172($fp) + move $a0 $t0 + li $t9 4 + mul $s7 $a0 $t9 + sw $t0 -172($fp) + move $a0 $s7 + li $t9 4 + add $s7 $a0 $t9 + move $a0 $t6 + move $t9 $s7 + add $s7 $a0 $t9 + lw $s0 0($s7) + lw $t0 -168($fp) + move $t0 $s0 + sw $t0 -168($fp) + lw $t0 -176($fp) + lw $t1 -168($fp) + move $t0 $t1 + sw $t1 -168($fp) + sw $t0 -176($fp) + lw $t0 -176($fp) + move $s5 $t0 + sw $t0 -176($fp) + lw $t0 -228($fp) + move $s4 $t0 + sw $t0 -228($fp) + move $a0 $s5 + move $t9 $s4 + slt $s6 $a0 $t9 + move $s3 $s6 + lw $t0 -308($fp) + move $t0 $s3 + sw $t0 -308($fp) + lw $t0 -308($fp) + beqz $t0 if75_else + sw $t0 -308($fp) +if75_body: + lw $t0 -336($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -336($fp) + lw $t0 -332($fp) + li $t0 1 + sw $t0 -332($fp) + lw $t0 -312($fp) + lw $t1 -336($fp) + lw $t2 -332($fp) + move $a0 $t1 + move $t9 $t2 + sub $t0 $a0 $t9 + sw $t2 -332($fp) + sw $t1 -336($fp) + sw $t0 -312($fp) + lw $t0 -344($fp) + lw $t1 -312($fp) + move $t0 $t1 + sw $t1 -312($fp) + sw $t0 -344($fp) + lw $t0 -316($fp) + lw $t1 -344($fp) + move $t0 $t1 + sw $t1 -344($fp) + sw $t0 -316($fp) + lw $t0 -328($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -328($fp) + lw $t0 -320($fp) + lw $t1 -328($fp) + move $t0 $t1 + sw $t1 -328($fp) + sw $t0 -320($fp) + lw $t0 -264($fp) + lw $t1 -316($fp) + move $t0 $t1 + sw $t1 -316($fp) + sw $t0 -264($fp) + lw $t0 -268($fp) + lw $t1 -264($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -264($fp) + sw $t0 -268($fp) + lw $t0 -268($fp) + lw $t1 -268($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -268($fp) + sw $t0 -268($fp) + lw $t0 -268($fp) + lw $t1 -320($fp) + lw $t2 -268($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -268($fp) + sw $t1 -320($fp) + sw $t0 -268($fp) + lw $t0 -324($fp) + lw $t1 -268($fp) + lw $t0 0($t1) + sw $t1 -268($fp) + sw $t0 -324($fp) + lw $t0 -276($fp) + lw $t1 -324($fp) + move $t0 $t1 + sw $t1 -324($fp) + sw $t0 -276($fp) + lw $t0 -340($fp) + lw $t1 -276($fp) + move $t0 $t1 + sw $t1 -276($fp) + sw $t0 -340($fp) + lw $t0 -272($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -272($fp) + lw $t0 -292($fp) + lw $t1 -316($fp) + move $t0 $t1 + sw $t1 -316($fp) + sw $t0 -292($fp) + lw $t0 -304($fp) + lw $t1 -292($fp) + move $t0 $t1 + sw $t1 -292($fp) + sw $t0 -304($fp) + lw $t0 -296($fp) + lw $t1 -304($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -304($fp) + sw $t0 -296($fp) + lw $t0 -296($fp) + lw $t1 -296($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -296($fp) + sw $t0 -296($fp) + lw $t0 -296($fp) + lw $t1 -272($fp) + lw $t2 -296($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -296($fp) + sw $t1 -272($fp) + sw $t0 -296($fp) + lw $t0 -280($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -280($fp) + lw $t0 -284($fp) + lw $t1 -280($fp) + move $t0 $t1 + sw $t1 -280($fp) + sw $t0 -284($fp) + lw $t0 -184($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -184($fp) + lw $t0 -200($fp) + lw $t1 -184($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -184($fp) + sw $t0 -200($fp) + lw $t0 -200($fp) + lw $t1 -200($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -200($fp) + sw $t0 -200($fp) + lw $t0 -200($fp) + lw $t1 -284($fp) + lw $t2 -200($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -200($fp) + sw $t1 -284($fp) + sw $t0 -200($fp) + lw $t0 -300($fp) + lw $t1 -200($fp) + lw $t0 0($t1) + sw $t1 -200($fp) + sw $t0 -300($fp) + lw $t0 -180($fp) + lw $t1 -300($fp) + move $t0 $t1 + sw $t1 -300($fp) + sw $t0 -180($fp) + lw $t0 -296($fp) + lw $t1 -180($fp) + sw $t1 0($t0) + sw $t1 -180($fp) + sw $t0 -296($fp) + lw $t0 -196($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -196($fp) + lw $t0 -232($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -232($fp) + lw $t0 -224($fp) + lw $t1 -232($fp) + move $t0 $t1 + sw $t1 -232($fp) + sw $t0 -224($fp) + lw $t0 -188($fp) + lw $t1 -224($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -224($fp) + sw $t0 -188($fp) + lw $t0 -188($fp) + lw $t1 -188($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -188($fp) + sw $t0 -188($fp) + lw $t0 -188($fp) + lw $t1 -196($fp) + lw $t2 -188($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -188($fp) + sw $t1 -196($fp) + sw $t0 -188($fp) + lw $t0 -248($fp) + lw $t1 -340($fp) + move $t0 $t1 + sw $t1 -340($fp) + sw $t0 -248($fp) + lw $t0 -240($fp) + lw $t1 -248($fp) + move $t0 $t1 + sw $t1 -248($fp) + sw $t0 -240($fp) + lw $t0 -188($fp) + lw $t1 -240($fp) + sw $t1 0($t0) + sw $t1 -240($fp) + sw $t0 -188($fp) + j if75_end +if75_else: + li $s2 0 + move $s1 $s2 + lw $t0 -212($fp) + move $t0 $s1 + sw $t0 -212($fp) +if75_end: + lw $t0 -100($fp) + move $t3 $t0 + sw $t0 -100($fp) + li $t7 1 + move $a0 $t3 + move $t9 $t7 + add $t4 $a0 $t9 + move $t5 $t4 + lw $t0 -100($fp) + move $t0 $t5 + sw $t0 -100($fp) + j while49_test +while49_end: + lw $t0 -132($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -132($fp) + lw $t0 -68($fp) + li $t0 1 + sw $t0 -68($fp) + lw $t0 -124($fp) + lw $t1 -132($fp) + lw $t2 -68($fp) + move $a0 $t1 + move $t9 $t2 + sub $t0 $a0 $t9 + sw $t2 -68($fp) + sw $t1 -132($fp) + sw $t0 -124($fp) + lw $t0 -116($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -116($fp) + lw $t0 -156($fp) + lw $t1 -116($fp) + move $t0 $t1 + sw $t1 -116($fp) + sw $t0 -156($fp) + j while41_test +while41_end: + li $s7 0 + move $s4 $s7 + move $s7 $s4 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 344 + jr $ra +BBS_Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 92 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 0 + move $s5 $s7 + move $s7 $s5 +while121_test: + move $s5 $s7 + lw $t0 -76($fp) + lw $t0 0($s6) + sw $t0 -76($fp) + lw $t0 -84($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -80($fp) + lw $t0 -72($fp) + lw $t1 -80($fp) + move $a0 $s5 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -80($fp) + sw $t0 -72($fp) + lw $t0 -92($fp) + lw $t1 -72($fp) + move $t0 $t1 + sw $t1 -72($fp) + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -88($fp) + lw $t0 -88($fp) + beqz $t0 while121_end + sw $t0 -88($fp) +while121_body: + lw $t6 0($s6) + move $t5 $t6 + move $s4 $s7 + move $a0 $s4 + li $t9 4 + mul $s3 $a0 $t9 + move $a0 $s3 + li $t9 4 + add $s3 $a0 $t9 + move $a0 $t5 + move $t9 $s3 + add $s3 $a0 $t9 + lw $s0 0($s3) + move $s1 $s0 + move $s2 $s1 + move $a0 $s2 + jal _print + move $t4 $s7 + lw $t0 -68($fp) + li $t0 1 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $a0 $t4 + move $t9 $t0 + add $t3 $a0 $t9 + sw $t0 -68($fp) + move $t7 $t3 + move $s7 $t7 + j while121_test +while121_end: + li $t3 0 + move $t4 $t3 + move $t3 $t4 + move $v0 $t3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 92 + jr $ra +BBS_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s4 $s7 + sw $s4 0($s5) + move $s4 $s6 + move $s6 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $AllocArray + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s6 $s4 + move $s4 $s6 + sw $s4 0($s5) + lw $s4 0($s5) + li $s6 0 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 20 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 1 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 7 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 2 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 12 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 3 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 18 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 4 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 2 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 5 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 11 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 6 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 6 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 7 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 9 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 8 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 19 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s5 9 + move $s6 $s5 + move $a0 $s6 + li $t9 4 + mul $s5 $a0 $t9 + move $a0 $s5 + li $t9 4 + add $s5 $a0 $t9 + move $a0 $s7 + move $t9 $s5 + add $s5 $a0 $t9 + li $s7 5 + move $s6 $s7 + sw $s6 0($s5) + li $s6 0 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/BubbleSort.vaporm b/output/BubbleSort.vaporm index e69de29..ccc8e40 100644 --- a/output/BubbleSort.vaporm +++ b/output/BubbleSort.vaporm @@ -0,0 +1,897 @@ +const functable_BBS + :BBS_Start + :BBS_Sort + :BBS_Print + :BBS_Init +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = HeapAllocZ(24 ) + [$s7+0] = :functable_BBS + $s6 = $s7 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + $s6 = 10 + $s4 = $s6 + 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] + $s6 = $v0 + $s4 = $s6 + $s6 = $s4 + PrintIntS($s6 ) + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func BBS_Start [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = $a1 + $s5 = $s6 + $s5 = [$s6+0] + $s4 = $s7 + $s7 = $s4 + $s5 = [$s5+12] + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s6 + $a1 = $s7 + call $s5 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s4 = $v0 + $s7 = $s4 + $s4 = $s7 + $s7 = $s6 + $s7 = [$s6+0] + $s7 = [$s7+8] + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s6 + call $s7 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s5 = $v0 + $s7 = $s5 + $s4 = $s7 + $s7 = 99999 + $s5 = $s7 + $s7 = $s5 + PrintIntS($s7 ) + $s7 = $s6 + $s7 = [$s6+0] + $s7 = [$s7+4] + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s6 + call $s7 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s5 = $v0 + $s7 = $s5 + $s4 = $s7 + $s7 = $s6 + $s7 = [$s6+0] + $s7 = [$s7+8] + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s6 + call $s7 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s5 = $v0 + $s7 = $s5 + $s4 = $s7 + $s7 = 0 + $s4 = $s7 + $s7 = $s4 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func BBS_Sort [in 0, out 0, local 84] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + local[37] = $a0 + $t0 = local[37] + $s6 = [$t0+20] + local[37] = $t0 + $s5 = 1 + $s4 = Sub($s6 $s5 ) + $s5 = $s4 + $t0 = local[36] + $t0 = $s5 + local[36] = $t0 + $s5 = 0 + $s6 = 1 + $s3 = Sub($s5 $s6 ) + $s6 = $s3 + $t0 = local[35] + $t0 = $s6 + local[35] = $t0 +while41_test: + $t0 = local[34] + $t1 = local[35] + $t0 = $t1 + local[35] = $t1 + local[34] = $t0 + $t0 = local[24] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[24] = $t0 + $t0 = local[23] + $t1 = local[34] + $t2 = local[24] + $t0 = LtS($t1 $t2 ) + local[24] = $t2 + local[34] = $t1 + local[23] = $t0 + $t0 = local[20] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[20] = $t0 + $t0 = local[19] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[19] = $t0 + $t0 = local[19] + if0 $t0 goto :while41_end + local[19] = $t0 +while41_body: + $t0 = local[21] + $t0 = 1 + local[21] = $t0 + $t0 = local[17] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[17] = $t0 + $t0 = local[22] + $t1 = local[17] + $t0 = $t1 + local[17] = $t1 + local[22] = $t0 +while49_test: + $t0 = local[18] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[18] = $t0 + $t0 = local[29] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[29] = $t0 + $t0 = local[15] + $t0 = 1 + local[15] = $t0 + $t0 = local[27] + $t1 = local[29] + $t2 = local[15] + $t0 = Add($t1 $t2 ) + local[15] = $t2 + local[29] = $t1 + local[27] = $t0 + $t0 = local[25] + $t1 = local[27] + $t0 = $t1 + local[27] = $t1 + local[25] = $t0 + $t0 = local[32] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[32] = $t0 + $t0 = local[16] + $t1 = local[18] + $t2 = local[32] + $t0 = LtS($t1 $t2 ) + local[32] = $t2 + local[18] = $t1 + local[16] = $t0 + $t0 = local[33] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[33] = $t0 + $t0 = local[31] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[31] = $t0 + $t0 = local[31] + if0 $t0 goto :while49_end + local[31] = $t0 +while49_body: + $t0 = local[61] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[61] = $t0 + $t0 = local[45] + $t0 = 1 + local[45] = $t0 + $t0 = local[62] + $t1 = local[61] + $t2 = local[45] + $t0 = Sub($t1 $t2 ) + local[45] = $t2 + local[61] = $t1 + local[62] = $t0 + $t0 = local[56] + $t1 = local[62] + $t0 = $t1 + local[62] = $t1 + local[56] = $t0 + $t0 = local[69] + $t1 = local[56] + $t0 = $t1 + local[56] = $t1 + local[69] = $t0 + $t0 = local[49] + $t1 = local[37] + $t0 = [$t1+16] + local[37] = $t1 + local[49] = $t0 + $t0 = local[58] + $t1 = local[49] + $t0 = $t1 + local[49] = $t1 + local[58] = $t0 + $t0 = local[52] + $t1 = local[69] + $t0 = $t1 + local[69] = $t1 + local[52] = $t0 + $t0 = local[48] + $t1 = local[52] + $t0 = MulS($t1 4 ) + local[52] = $t1 + local[48] = $t0 + $t0 = local[48] + $t1 = local[48] + $t0 = Add($t1 4 ) + local[48] = $t1 + local[48] = $t0 + $t0 = local[48] + $t1 = local[58] + $t2 = local[48] + $t0 = Add($t1 $t2 ) + local[48] = $t2 + local[58] = $t1 + local[48] = $t0 + $t0 = local[60] + $t1 = local[48] + $t0 = [$t1+0] + local[48] = $t1 + local[60] = $t0 + $t0 = local[51] + $t1 = local[60] + $t0 = $t1 + local[60] = $t1 + local[51] = $t0 + $t0 = local[54] + $t1 = local[51] + $t0 = $t1 + local[51] = $t1 + local[54] = $t0 + $t0 = local[38] + $t1 = local[37] + $t0 = [$t1+16] + local[37] = $t1 + local[38] = $t0 + $t0 = local[38] + $t6 = $t0 + local[38] = $t0 + $t0 = local[40] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[40] = $t0 + $t0 = local[40] + $s7 = MulS($t0 4 ) + local[40] = $t0 + $s7 = Add($s7 4 ) + $s7 = Add($t6 $s7 ) + $s0 = [$s7+0] + $t0 = local[39] + $t0 = $s0 + local[39] = $t0 + $t0 = local[41] + $t1 = local[39] + $t0 = $t1 + local[39] = $t1 + local[41] = $t0 + $t0 = local[41] + $s5 = $t0 + local[41] = $t0 + $t0 = local[54] + $s4 = $t0 + local[54] = $t0 + $s6 = LtS($s5 $s4 ) + $s3 = $s6 + $t0 = local[74] + $t0 = $s3 + local[74] = $t0 + $t0 = local[74] + if0 $t0 goto :if75_else + local[74] = $t0 +if75_body: + $t0 = local[81] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[81] = $t0 + $t0 = local[80] + $t0 = 1 + local[80] = $t0 + $t0 = local[75] + $t1 = local[81] + $t2 = local[80] + $t0 = Sub($t1 $t2 ) + local[80] = $t2 + local[81] = $t1 + local[75] = $t0 + $t0 = local[83] + $t1 = local[75] + $t0 = $t1 + local[75] = $t1 + local[83] = $t0 + $t0 = local[76] + $t1 = local[83] + $t0 = $t1 + local[83] = $t1 + local[76] = $t0 + $t0 = local[79] + $t1 = local[37] + $t0 = [$t1+16] + local[37] = $t1 + local[79] = $t0 + $t0 = local[77] + $t1 = local[79] + $t0 = $t1 + local[79] = $t1 + local[77] = $t0 + $t0 = local[63] + $t1 = local[76] + $t0 = $t1 + local[76] = $t1 + local[63] = $t0 + $t0 = local[64] + $t1 = local[63] + $t0 = MulS($t1 4 ) + local[63] = $t1 + local[64] = $t0 + $t0 = local[64] + $t1 = local[64] + $t0 = Add($t1 4 ) + local[64] = $t1 + local[64] = $t0 + $t0 = local[64] + $t1 = local[77] + $t2 = local[64] + $t0 = Add($t1 $t2 ) + local[64] = $t2 + local[77] = $t1 + local[64] = $t0 + $t0 = local[78] + $t1 = local[64] + $t0 = [$t1+0] + local[64] = $t1 + local[78] = $t0 + $t0 = local[66] + $t1 = local[78] + $t0 = $t1 + local[78] = $t1 + local[66] = $t0 + $t0 = local[82] + $t1 = local[66] + $t0 = $t1 + local[66] = $t1 + local[82] = $t0 + $t0 = local[65] + $t1 = local[37] + $t0 = [$t1+16] + local[37] = $t1 + local[65] = $t0 + $t0 = local[70] + $t1 = local[76] + $t0 = $t1 + local[76] = $t1 + local[70] = $t0 + $t0 = local[73] + $t1 = local[70] + $t0 = $t1 + local[70] = $t1 + local[73] = $t0 + $t0 = local[71] + $t1 = local[73] + $t0 = MulS($t1 4 ) + local[73] = $t1 + local[71] = $t0 + $t0 = local[71] + $t1 = local[71] + $t0 = Add($t1 4 ) + local[71] = $t1 + local[71] = $t0 + $t0 = local[71] + $t1 = local[65] + $t2 = local[71] + $t0 = Add($t1 $t2 ) + local[71] = $t2 + local[65] = $t1 + local[71] = $t0 + $t0 = local[67] + $t1 = local[37] + $t0 = [$t1+16] + local[37] = $t1 + local[67] = $t0 + $t0 = local[68] + $t1 = local[67] + $t0 = $t1 + local[67] = $t1 + local[68] = $t0 + $t0 = local[43] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[43] = $t0 + $t0 = local[47] + $t1 = local[43] + $t0 = MulS($t1 4 ) + local[43] = $t1 + local[47] = $t0 + $t0 = local[47] + $t1 = local[47] + $t0 = Add($t1 4 ) + local[47] = $t1 + local[47] = $t0 + $t0 = local[47] + $t1 = local[68] + $t2 = local[47] + $t0 = Add($t1 $t2 ) + local[47] = $t2 + local[68] = $t1 + local[47] = $t0 + $t0 = local[72] + $t1 = local[47] + $t0 = [$t1+0] + local[47] = $t1 + local[72] = $t0 + $t0 = local[42] + $t1 = local[72] + $t0 = $t1 + local[72] = $t1 + local[42] = $t0 + $t0 = local[71] + $t1 = local[42] + [$t0+0] = $t1 + local[42] = $t1 + local[71] = $t0 + $t0 = local[46] + $t1 = local[37] + $t0 = [$t1+16] + local[37] = $t1 + local[46] = $t0 + $t0 = local[55] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[55] = $t0 + $t0 = local[53] + $t1 = local[55] + $t0 = $t1 + local[55] = $t1 + local[53] = $t0 + $t0 = local[44] + $t1 = local[53] + $t0 = MulS($t1 4 ) + local[53] = $t1 + local[44] = $t0 + $t0 = local[44] + $t1 = local[44] + $t0 = Add($t1 4 ) + local[44] = $t1 + local[44] = $t0 + $t0 = local[44] + $t1 = local[46] + $t2 = local[44] + $t0 = Add($t1 $t2 ) + local[44] = $t2 + local[46] = $t1 + local[44] = $t0 + $t0 = local[59] + $t1 = local[82] + $t0 = $t1 + local[82] = $t1 + local[59] = $t0 + $t0 = local[57] + $t1 = local[59] + $t0 = $t1 + local[59] = $t1 + local[57] = $t0 + $t0 = local[44] + $t1 = local[57] + [$t0+0] = $t1 + local[57] = $t1 + local[44] = $t0 + goto :if75_end +if75_else: + $s2 = 0 + $s1 = $s2 + $t0 = local[50] + $t0 = $s1 + local[50] = $t0 +if75_end: + $t0 = local[22] + $t3 = $t0 + local[22] = $t0 + $t7 = 1 + $t4 = Add($t3 $t7 ) + $t5 = $t4 + $t0 = local[22] + $t0 = $t5 + local[22] = $t0 + goto :while49_test +while49_end: + $t0 = local[30] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[30] = $t0 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 + $t0 = local[28] + $t1 = local[30] + $t2 = local[14] + $t0 = Sub($t1 $t2 ) + local[14] = $t2 + local[30] = $t1 + local[28] = $t0 + $t0 = local[26] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 + local[26] = $t0 + $t0 = local[36] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[36] = $t0 + goto :while41_test +while41_end: + $s7 = 0 + $s4 = $s7 + $s7 = $s4 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func BBS_Print [in 0, out 0, local 21] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = 0 + $s5 = $s7 + $s7 = $s5 +while121_test: + $s5 = $s7 + $t0 = local[16] + $t0 = [$s6+20] + local[16] = $t0 + $t0 = local[18] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[18] = $t0 + $t0 = local[17] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[17] = $t0 + $t0 = local[15] + $t1 = local[17] + $t0 = LtS($s5 $t1 ) + local[17] = $t1 + local[15] = $t0 + $t0 = local[20] + $t1 = local[15] + $t0 = $t1 + local[15] = $t1 + local[20] = $t0 + $t0 = local[19] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[19] = $t0 + $t0 = local[19] + if0 $t0 goto :while121_end + local[19] = $t0 +while121_body: + $t6 = [$s6+16] + $t5 = $t6 + $s4 = $s7 + $s3 = MulS($s4 4 ) + $s3 = Add($s3 4 ) + $s3 = Add($t5 $s3 ) + $s0 = [$s3+0] + $s1 = $s0 + $s2 = $s1 + PrintIntS($s2 ) + $t4 = $s7 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 + $t0 = local[14] + $t3 = Add($t4 $t0 ) + local[14] = $t0 + $t7 = $t3 + $s7 = $t7 + goto :while121_test +while121_end: + $t3 = 0 + $t4 = $t3 + $t3 = $t4 + $v0 = $t3 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func BBS_Init [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s4 = $s7 + [$s5+20] = $s4 + $s4 = $s6 + $s6 = $s4 + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s6 + call :AllocArray + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s4 = $v0 + $s6 = $s4 + $s4 = $s6 + [$s5+16] = $s4 + $s4 = [$s5+16] + $s6 = 0 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 20 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 1 + $s4 = $s6 + $s6 = MulS($s4 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) + $s7 = 7 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 2 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 12 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 3 + $s4 = $s6 + $s6 = MulS($s4 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) + $s7 = 18 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 4 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 2 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 5 + $s4 = $s6 + $s6 = MulS($s4 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) + $s7 = 11 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 6 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 6 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 7 + $s4 = $s6 + $s6 = MulS($s4 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) + $s7 = 9 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 8 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 19 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s5 = 9 + $s6 = $s5 + $s5 = MulS($s6 4 ) + $s5 = Add($s5 4 ) + $s5 = Add($s7 $s5 ) + $s7 = 5 + $s6 = $s7 + [$s5+0] = $s6 + $s6 = 0 + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret diff --git a/output/Factorial.s b/output/Factorial.s new file mode 100644 index 0000000..b86b54c --- /dev/null +++ b/output/Factorial.s @@ -0,0 +1,199 @@ +.data +functable_Fac: + Fac_ComputeFac +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Fac + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 10 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Fac_ComputeFac: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s7 + li $s4 1 + move $a0 $s5 + move $t9 $s4 + slt $s3 $a0 $t9 + move $s4 $s3 + move $s3 $s4 + beqz $s3 if9_else +if9_body: + li $s3 1 + move $s4 $s3 + move $s3 $s4 + j if9_end +if9_else: + move $s4 $s7 + move $s5 $s6 + lw $s5 0($s6) + move $s2 $s7 + li $s7 1 + move $a0 $s2 + move $t9 $s7 + sub $s1 $a0 $t9 + move $s7 $s1 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + move $s7 $s1 + move $s1 $s7 + move $a0 $s4 + move $t9 $s1 + mul $s7 $a0 $t9 + move $s1 $s7 + move $s3 $s1 +if9_end: + move $s1 $s3 + move $s3 $s1 + move $s1 $s3 + move $v0 $s1 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/Factorial.vaporm b/output/Factorial.vaporm index 714dcb0..7276527 100644 --- a/output/Factorial.vaporm +++ b/output/Factorial.vaporm @@ -12,17 +12,19 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_Fac $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] - $s7 = 10 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + $s6 = 10 + $s4 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 + $a0 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -30,9 +32,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s7 = $s4 - PrintIntS($s7 ) + $s6 = $v0 + $s4 = $s6 + $s6 = $s4 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -57,12 +60,16 @@ func Fac_ComputeFac [in 0, out 0, local 14] $s4 = 1 $s3 = LtS($s5 $s4 ) $s4 = $s3 - if0 $s4 goto :if6_else -if6_body: - $s4 = 1 - goto :if6_end -if6_else: - $s3 = $s7 + $s3 = $s4 + if0 $s3 goto :if9_else +if9_body: + $s3 = 1 + $s4 = $s3 + $s3 = $s4 + goto :if9_end +if9_else: + $s4 = $s7 + $s5 = $s6 $s5 = [$s6+0] $s2 = $s7 $s7 = 1 @@ -86,10 +93,14 @@ if6_else: $t8 = local[13] $s1 = $v0 $s7 = $s1 - $s1 = MulS($s3 $s7 ) - $s4 = $s1 -if6_end: - $s1 = $s4 + $s1 = $s7 + $s7 = MulS($s4 $s1 ) + $s1 = $s7 + $s3 = $s1 +if9_end: + $s1 = $s3 + $s3 = $s1 + $s1 = $s3 $v0 = $s1 $s0 = local[0] $s1 = local[1] diff --git a/output/LinearSearch.s b/output/LinearSearch.s new file mode 100644 index 0000000..b320fd7 --- /dev/null +++ b/output/LinearSearch.s @@ -0,0 +1,931 @@ +.data +functable_LS: + LS_Start + LS_Print + LS_Search + LS_Init +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 24 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_LS + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 10 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +LS_Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + lw $s5 0($s6) + move $s4 $s7 + move $s7 $s4 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s7 $s4 + move $s4 $s7 + move $s4 $s6 + lw $s4 0($s6) + lw $s4 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + li $s7 9999 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + move $s7 $s6 + lw $s7 0($s6) + li $s4 8 + move $s5 $s4 + lw $s7 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s5 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s5 $s4 + move $s4 $s5 + move $a0 $s4 + jal _print + move $s4 $s6 + lw $s4 0($s6) + li $s5 12 + move $s7 $s5 + lw $s4 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s7 $s5 + move $s5 $s7 + move $a0 $s5 + jal _print + move $s5 $s6 + lw $s5 0($s6) + li $s7 17 + move $s4 $s7 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + move $s7 $s6 + lw $s7 0($s6) + li $s4 50 + move $s5 $s4 + lw $s7 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s5 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s5 $s4 + move $s4 $s5 + move $a0 $s4 + jal _print + li $s4 55 + move $s5 $s4 + move $s4 $s5 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +LS_Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 92 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 1 + move $s5 $s7 + move $s7 $s5 +while55_test: + move $s5 $s7 + lw $t0 -76($fp) + lw $t0 0($s6) + sw $t0 -76($fp) + lw $t0 -84($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -80($fp) + lw $t0 -72($fp) + lw $t1 -80($fp) + move $a0 $s5 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -80($fp) + sw $t0 -72($fp) + lw $t0 -92($fp) + lw $t1 -72($fp) + move $t0 $t1 + sw $t1 -72($fp) + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -88($fp) + lw $t0 -88($fp) + beqz $t0 while55_end + sw $t0 -88($fp) +while55_body: + lw $t6 0($s6) + move $t5 $t6 + move $s4 $s7 + move $a0 $s4 + li $t9 4 + mul $s3 $a0 $t9 + move $a0 $s3 + li $t9 4 + add $s3 $a0 $t9 + move $a0 $t5 + move $t9 $s3 + add $s3 $a0 $t9 + lw $s0 0($s3) + move $s1 $s0 + move $s2 $s1 + move $a0 $s2 + jal _print + move $t4 $s7 + lw $t0 -68($fp) + li $t0 1 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $a0 $t4 + move $t9 $t0 + add $t3 $a0 $t9 + sw $t0 -68($fp) + move $t7 $t3 + move $s7 $t7 + j while55_test +while55_end: + li $t3 0 + move $t4 $t3 + move $t3 $t4 + move $v0 $t3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 92 + jr $ra +LS_Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 228 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + li $s5 1 + move $s4 $s5 + move $s5 $s4 + li $s4 0 + move $s3 $s4 + move $s4 $s3 + li $s3 0 + move $s2 $s3 + lw $t0 -68($fp) + move $t0 $s2 + sw $t0 -68($fp) +while83_test: + move $s2 $s5 + lw $t0 -216($fp) + lw $t0 0($s6) + sw $t0 -216($fp) + lw $t0 -188($fp) + lw $t1 -216($fp) + move $t0 $t1 + sw $t1 -216($fp) + sw $t0 -188($fp) + lw $t0 -180($fp) + lw $t1 -188($fp) + move $t0 $t1 + sw $t1 -188($fp) + sw $t0 -180($fp) + lw $t0 -200($fp) + lw $t1 -180($fp) + move $a0 $s2 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -180($fp) + sw $t0 -200($fp) + lw $t0 -196($fp) + lw $t1 -200($fp) + move $t0 $t1 + sw $t1 -200($fp) + sw $t0 -196($fp) + lw $t0 -192($fp) + lw $t1 -196($fp) + move $t0 $t1 + sw $t1 -196($fp) + sw $t0 -192($fp) + lw $t0 -192($fp) + beqz $t0 while83_end + sw $t0 -192($fp) +while83_body: + lw $t0 -140($fp) + lw $t0 0($s6) + sw $t0 -140($fp) + lw $t0 -160($fp) + lw $t1 -140($fp) + move $t0 $t1 + sw $t1 -140($fp) + sw $t0 -160($fp) + lw $t0 -148($fp) + move $t0 $s5 + sw $t0 -148($fp) + lw $t0 -136($fp) + lw $t1 -148($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -148($fp) + sw $t0 -136($fp) + lw $t0 -136($fp) + lw $t1 -136($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -136($fp) + sw $t0 -136($fp) + lw $t0 -136($fp) + lw $t1 -160($fp) + lw $t2 -136($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -136($fp) + sw $t1 -160($fp) + sw $t0 -136($fp) + lw $t0 -152($fp) + lw $t1 -136($fp) + lw $t0 0($t1) + sw $t1 -136($fp) + sw $t0 -152($fp) + lw $t0 -144($fp) + lw $t1 -152($fp) + move $t0 $t1 + sw $t1 -152($fp) + sw $t0 -144($fp) + lw $t0 -156($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -156($fp) + lw $t0 -132($fp) + move $t0 $s7 + sw $t0 -132($fp) + lw $t0 -128($fp) + li $t0 1 + sw $t0 -128($fp) + lw $t0 -120($fp) + lw $t1 -132($fp) + lw $t2 -128($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -128($fp) + sw $t1 -132($fp) + sw $t0 -120($fp) + lw $t0 -116($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -116($fp) + lw $t0 -124($fp) + lw $t1 -116($fp) + move $t0 $t1 + sw $t1 -116($fp) + sw $t0 -124($fp) + lw $t0 -76($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -76($fp) + lw $t0 -100($fp) + move $t0 $s7 + sw $t0 -100($fp) + lw $t0 -112($fp) + lw $t1 -76($fp) + lw $t2 -100($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -100($fp) + sw $t1 -76($fp) + sw $t0 -112($fp) + lw $t0 -96($fp) + lw $t1 -112($fp) + move $t0 $t1 + sw $t1 -112($fp) + sw $t0 -96($fp) + lw $t0 -108($fp) + lw $t1 -96($fp) + move $t0 $t1 + sw $t1 -96($fp) + sw $t0 -108($fp) + lw $t0 -108($fp) + beqz $t0 if101_else + sw $t0 -108($fp) +if101_body: + lw $t0 -84($fp) + li $t0 0 + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -80($fp) + lw $t0 -104($fp) + lw $t1 -80($fp) + move $t0 $t1 + sw $t1 -80($fp) + sw $t0 -104($fp) + j if101_end +if101_else: + lw $t0 -72($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -72($fp) + lw $t0 -124($fp) + move $s0 $t0 + sw $t0 -124($fp) + lw $t0 -88($fp) + lw $t1 -72($fp) + move $a0 $t1 + move $t9 $s0 + slt $t0 $a0 $t9 + sw $t1 -72($fp) + sw $t0 -88($fp) + lw $t0 -88($fp) + move $s1 $t0 + sw $t0 -88($fp) + move $t4 $s1 + move $t5 $t4 + lw $t0 -92($fp) + move $a0 $t5 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t0 -92($fp) + lw $t0 -224($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -224($fp) + lw $t0 -228($fp) + lw $t1 -224($fp) + move $t0 $t1 + sw $t1 -224($fp) + sw $t0 -228($fp) + lw $t0 -228($fp) + move $t7 $t0 + sw $t0 -228($fp) + beqz $t7 if108_else +if108_body: + li $s3 0 + move $t3 $s3 + lw $t0 -104($fp) + move $t0 $t3 + sw $t0 -104($fp) + j if108_end +if108_else: + li $t6 1 + lw $t0 -164($fp) + move $t0 $t6 + sw $t0 -164($fp) + lw $t0 -164($fp) + move $s4 $t0 + sw $t0 -164($fp) + lw $t0 -172($fp) + li $t0 1 + sw $t0 -172($fp) + lw $t0 -168($fp) + lw $t1 -172($fp) + move $t0 $t1 + sw $t1 -172($fp) + sw $t0 -168($fp) + lw $t0 -68($fp) + lw $t1 -168($fp) + move $t0 $t1 + sw $t1 -168($fp) + sw $t0 -68($fp) + lw $t0 -208($fp) + lw $t0 0($s6) + sw $t0 -208($fp) + lw $t0 -204($fp) + lw $t1 -208($fp) + move $t0 $t1 + sw $t1 -208($fp) + sw $t0 -204($fp) + lw $t0 -204($fp) + move $s5 $t0 + sw $t0 -204($fp) +if108_end: +if101_end: + lw $t0 -212($fp) + move $t0 $s5 + sw $t0 -212($fp) + lw $t0 -184($fp) + li $t0 1 + sw $t0 -184($fp) + lw $t0 -220($fp) + lw $t1 -212($fp) + lw $t2 -184($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -184($fp) + sw $t1 -212($fp) + sw $t0 -220($fp) + lw $t0 -176($fp) + lw $t1 -220($fp) + move $t0 $t1 + sw $t1 -220($fp) + sw $t0 -176($fp) + lw $t0 -176($fp) + move $s5 $t0 + sw $t0 -176($fp) + j while83_test +while83_end: + lw $t0 -68($fp) + move $t4 $t0 + sw $t0 -68($fp) + move $t5 $t4 + move $t4 $t5 + move $v0 $t4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 228 + jr $ra +LS_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 156 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s4 $s7 + sw $s4 0($s5) + move $s4 $s6 + move $s6 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $AllocArray + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s6 $s4 + move $s4 $s6 + sw $s4 0($s5) + li $s4 1 + move $s6 $s4 + move $s4 $s6 + lw $s6 0($s5) + li $s7 1 + move $a0 $s6 + move $t9 $s7 + add $s3 $a0 $t9 + move $s7 $s3 + move $s3 $s7 +while146_test: + move $s7 $s4 + lw $t0 -148($fp) + lw $t0 0($s5) + sw $t0 -148($fp) + lw $t0 -152($fp) + lw $t1 -148($fp) + move $t0 $t1 + sw $t1 -148($fp) + sw $t0 -152($fp) + lw $t0 -136($fp) + lw $t1 -152($fp) + move $t0 $t1 + sw $t1 -152($fp) + sw $t0 -136($fp) + lw $t0 -156($fp) + lw $t1 -136($fp) + move $a0 $s7 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -136($fp) + sw $t0 -156($fp) + lw $t0 -132($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -132($fp) + lw $t0 -144($fp) + lw $t1 -132($fp) + move $t0 $t1 + sw $t1 -132($fp) + sw $t0 -144($fp) + lw $t0 -144($fp) + beqz $t0 while146_end + sw $t0 -144($fp) +while146_body: + lw $t0 -116($fp) + li $t0 2 + sw $t0 -116($fp) + lw $t0 -128($fp) + move $t0 $s4 + sw $t0 -128($fp) + lw $t0 -120($fp) + lw $t1 -116($fp) + lw $t2 -128($fp) + move $a0 $t1 + move $t9 $t2 + mul $t0 $a0 $t9 + sw $t2 -128($fp) + sw $t1 -116($fp) + sw $t0 -120($fp) + lw $t0 -124($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -124($fp) + lw $t0 -140($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -140($fp) + lw $t0 -72($fp) + move $t0 $s3 + sw $t0 -72($fp) + lw $t0 -96($fp) + li $t0 3 + sw $t0 -96($fp) + lw $t0 -108($fp) + lw $t1 -72($fp) + lw $t2 -96($fp) + move $a0 $t1 + move $t9 $t2 + sub $t0 $a0 $t9 + sw $t2 -96($fp) + sw $t1 -72($fp) + sw $t0 -108($fp) + lw $t0 -92($fp) + lw $t1 -108($fp) + move $t0 $t1 + sw $t1 -108($fp) + sw $t0 -92($fp) + lw $t0 -112($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -112($fp) + lw $t0 -104($fp) + lw $t0 0($s5) + sw $t0 -104($fp) + lw $t0 -80($fp) + move $t0 $s4 + sw $t0 -80($fp) + lw $t0 -76($fp) + lw $t1 -80($fp) + move $t0 $t1 + sw $t1 -80($fp) + sw $t0 -76($fp) + lw $t0 -100($fp) + lw $t1 -76($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -76($fp) + sw $t0 -100($fp) + lw $t0 -100($fp) + lw $t1 -100($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -100($fp) + sw $t0 -100($fp) + lw $t0 -100($fp) + lw $t1 -104($fp) + lw $t2 -100($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -100($fp) + sw $t1 -104($fp) + sw $t0 -100($fp) + lw $t0 -84($fp) + lw $t1 -140($fp) + move $t0 $t1 + sw $t1 -140($fp) + sw $t0 -84($fp) + lw $t0 -68($fp) + lw $t1 -112($fp) + move $t0 $t1 + sw $t1 -112($fp) + sw $t0 -68($fp) + lw $t0 -88($fp) + lw $t1 -84($fp) + lw $t2 -68($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -68($fp) + sw $t1 -84($fp) + sw $t0 -88($fp) + lw $t0 -88($fp) + move $s2 $t0 + sw $t0 -88($fp) + lw $t0 -100($fp) + sw $s2 0($t0) + sw $t0 -100($fp) + move $t5 $s4 + li $t6 1 + move $a0 $t5 + move $t9 $t6 + add $s6 $a0 $t9 + move $t3 $s6 + move $s4 $t3 + move $s0 $s3 + li $s1 1 + move $a0 $s0 + move $t9 $s1 + sub $t4 $a0 $t9 + move $t7 $t4 + move $s3 $t7 + j while146_test +while146_end: + li $t3 0 + move $t4 $t3 + move $t3 $t4 + move $v0 $t3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 156 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/LinearSearch.vaporm b/output/LinearSearch.vaporm index 244e073..09bbf66 100644 --- a/output/LinearSearch.vaporm +++ b/output/LinearSearch.vaporm @@ -15,17 +15,19 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(24 ) [$s7+0] = :functable_LS $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] - $s7 = 10 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + $s6 = 10 + $s4 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 + $a0 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -33,9 +35,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s7 = $s4 - PrintIntS($s7 ) + $s6 = $v0 + $s4 = $s6 + $s6 = $s4 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -56,8 +59,10 @@ func LS_Start [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 + $s5 = $s6 $s5 = [$s6+0] $s4 = $s7 + $s7 = $s4 $s5 = [$s5+12] local[8] = $t3 local[9] = $t4 @@ -66,7 +71,7 @@ func LS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s4 + $a1 = $s7 call $s5 $t3 = local[8] $t4 = local[9] @@ -74,8 +79,10 @@ func LS_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 + $s4 = $v0 + $s7 = $s4 $s4 = $s7 + $s4 = $s6 $s4 = [$s6+0] $s4 = [$s4+4] local[8] = $t3 @@ -94,11 +101,16 @@ func LS_Start [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s4 = $s7 - $s4 = 9999 - PrintIntS($s4 ) - $s4 = [$s6+0] - $s7 = 8 - $s4 = [$s4+8] + $s7 = $s4 + $s7 = 9999 + $s4 = $s7 + $s7 = $s4 + PrintIntS($s7 ) + $s7 = $s6 + $s7 = [$s6+0] + $s4 = 8 + $s5 = $s4 + $s7 = [$s7+8] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -106,20 +118,23 @@ func LS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 - call $s4 + $a1 = $s5 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s7 = $s5 - PrintIntS($s7 ) - $s7 = [$s6+0] + $s4 = $v0 + $s5 = $s4 + $s4 = $s5 + PrintIntS($s4 ) + $s4 = $s6 + $s4 = [$s6+0] $s5 = 12 - $s7 = [$s7+8] + $s7 = $s5 + $s4 = [$s4+8] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -127,19 +142,22 @@ func LS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s5 - call $s7 + $a1 = $s7 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s5 = $s4 + $s5 = $v0 + $s7 = $s5 + $s5 = $s7 PrintIntS($s5 ) + $s5 = $s6 $s5 = [$s6+0] - $s4 = 17 + $s7 = 17 + $s4 = $s7 $s5 = [$s5+8] local[8] = $t3 local[9] = $t4 @@ -158,10 +176,13 @@ func LS_Start [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s4 = $s7 - PrintIntS($s4 ) - $s4 = [$s6+0] - $s7 = 50 - $s4 = [$s4+8] + $s7 = $s4 + PrintIntS($s7 ) + $s7 = $s6 + $s7 = [$s6+0] + $s4 = 50 + $s5 = $s4 + $s7 = [$s7+8] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -169,19 +190,22 @@ func LS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 - call $s4 + $a1 = $s5 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s7 = $s5 - PrintIntS($s7 ) - $s7 = 55 - $v0 = $s7 + $s4 = $v0 + $s5 = $s4 + $s4 = $s5 + PrintIntS($s4 ) + $s4 = 55 + $s5 = $s4 + $s4 = $s5 + $v0 = $s4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -191,7 +215,7 @@ func LS_Start [in 0, out 0, local 14] $s6 = local[6] $s7 = local[7] ret -func LS_Print [in 0, out 0, local 14] +func LS_Print [in 0, out 0, local 21] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -202,27 +226,66 @@ func LS_Print [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = 1 -while29_test: $s5 = $s7 - $s1 = [$s6+20] - $s2 = LtS($s5 $s1 ) - $t7 = $s2 - if0 $t7 goto :while29_end -while29_body: - $t5 = [$s6+16] - $t6 = MulS($s7 4 ) - $t6 = Add($t6 4 ) - $t6 = Add($t5 $t6 ) - $s0 = [$t6+0] - $t3 = $s0 - PrintIntS($t3 ) + $s7 = $s5 +while55_test: + $s5 = $s7 + $t0 = local[16] + $t0 = [$s6+20] + local[16] = $t0 + $t0 = local[18] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[18] = $t0 + $t0 = local[17] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[17] = $t0 + $t0 = local[15] + $t1 = local[17] + $t0 = LtS($s5 $t1 ) + local[17] = $t1 + local[15] = $t0 + $t0 = local[20] + $t1 = local[15] + $t0 = $t1 + local[15] = $t1 + local[20] = $t0 + $t0 = local[19] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[19] = $t0 + $t0 = local[19] + if0 $t0 goto :while55_end + local[19] = $t0 +while55_body: + $t6 = [$s6+16] + $t5 = $t6 $s4 = $s7 - $s3 = 1 - $t4 = Add($s4 $s3 ) - $s7 = $t4 - goto :while29_test -while29_end: + $s3 = MulS($s4 4 ) + $s3 = Add($s3 4 ) + $s3 = Add($t5 $s3 ) + $s0 = [$s3+0] + $s1 = $s0 + $s2 = $s1 + PrintIntS($s2 ) + $t4 = $s7 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 + $t0 = local[14] + $t3 = Add($t4 $t0 ) + local[14] = $t0 + $t7 = $t3 + $s7 = $t7 + goto :while55_test +while55_end: $t3 = 0 + $t4 = $t3 + $t3 = $t4 $v0 = $t3 $s0 = local[0] $s1 = local[1] @@ -233,7 +296,7 @@ while29_end: $s6 = local[6] $s7 = local[7] ret -func LS_Search [in 0, out 0, local 31] +func LS_Search [in 0, out 0, local 55] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -242,140 +305,268 @@ func LS_Search [in 0, out 0, local 31] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 - $s7 = 1 + $s6 = $a0 + $s7 = $a1 + $s5 = 1 + $s4 = $s5 + $s5 = $s4 $s4 = 0 + $s3 = $s4 + $s4 = $s3 + $s3 = 0 + $s2 = $s3 $t0 = local[14] - $t0 = 0 + $t0 = $s2 local[14] = $t0 -while42_test: - $s2 = $s7 - $t0 = local[28] - $t0 = [$s5+20] - local[28] = $t0 - $t0 = local[26] - $t1 = local[28] +while83_test: + $s2 = $s5 + $t0 = local[51] + $t0 = [$s6+20] + local[51] = $t0 + $t0 = local[44] + $t1 = local[51] + $t0 = $t1 + local[51] = $t1 + local[44] = $t0 + $t0 = local[42] + $t1 = local[44] + $t0 = $t1 + local[44] = $t1 + local[42] = $t0 + $t0 = local[47] + $t1 = local[42] $t0 = LtS($s2 $t1 ) - local[28] = $t1 - local[26] = $t0 + local[42] = $t1 + local[47] = $t0 + $t0 = local[46] + $t1 = local[47] + $t0 = $t1 + local[47] = $t1 + local[46] = $t0 + $t0 = local[45] + $t1 = local[46] + $t0 = $t1 + local[46] = $t1 + local[45] = $t0 + $t0 = local[45] + if0 $t0 goto :while83_end + local[45] = $t0 +while83_body: + $t0 = local[32] + $t0 = [$s6+16] + local[32] = $t0 + $t0 = local[37] + $t1 = local[32] + $t0 = $t1 + local[32] = $t1 + local[37] = $t0 + $t0 = local[34] + $t0 = $s5 + local[34] = $t0 + $t0 = local[31] + $t1 = local[34] + $t0 = MulS($t1 4 ) + local[34] = $t1 + local[31] = $t0 + $t0 = local[31] + $t1 = local[31] + $t0 = Add($t1 4 ) + local[31] = $t1 + local[31] = $t0 + $t0 = local[31] + $t1 = local[37] + $t2 = local[31] + $t0 = Add($t1 $t2 ) + local[31] = $t2 + local[37] = $t1 + local[31] = $t0 + $t0 = local[35] + $t1 = local[31] + $t0 = [$t1+0] + local[31] = $t1 + local[35] = $t0 + $t0 = local[33] + $t1 = local[35] + $t0 = $t1 + local[35] = $t1 + local[33] = $t0 + $t0 = local[36] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[36] = $t0 + $t0 = local[30] + $t0 = $s7 + local[30] = $t0 + $t0 = local[29] + $t0 = 1 + local[29] = $t0 $t0 = local[27] + $t1 = local[30] + $t2 = local[29] + $t0 = Add($t1 $t2 ) + local[29] = $t2 + local[30] = $t1 + local[27] = $t0 + $t0 = local[26] + $t1 = local[27] + $t0 = $t1 + local[27] = $t1 + local[26] = $t0 + $t0 = local[28] $t1 = local[26] $t0 = $t1 local[26] = $t1 - local[27] = $t0 - $t0 = local[27] - if0 $t0 goto :while42_end - local[27] = $t0 -while42_body: + local[28] = $t0 + $t0 = local[16] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[16] = $t0 $t0 = local[22] - $t0 = [$s5+16] + $t0 = $s7 local[22] = $t0 + $t0 = local[25] + $t1 = local[16] + $t2 = local[22] + $t0 = LtS($t1 $t2 ) + local[22] = $t2 + local[16] = $t1 + local[25] = $t0 + $t0 = local[21] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[21] = $t0 $t0 = local[24] - $t0 = MulS($s7 4 ) - local[24] = $t0 - $t0 = local[24] - $t1 = local[24] - $t0 = Add($t1 4 ) - local[24] = $t1 + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 local[24] = $t0 $t0 = local[24] - $t1 = local[22] - $t2 = local[24] - $t0 = Add($t1 $t2 ) - local[24] = $t2 - local[22] = $t1 + if0 $t0 goto :if101_else 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 +if101_body: $t0 = local[18] - $t0 = $s6 + $t0 = 0 local[18] = $t0 - $t0 = local[21] - $t0 = 1 - local[21] = $t0 - $t0 = local[19] + $t0 = local[17] $t1 = local[18] - $t2 = local[21] - $t0 = Add($t1 $t2 ) - local[21] = $t2 + $t0 = $t1 local[18] = $t1 - local[19] = $t0 + local[17] = $t0 $t0 = local[23] - $t1 = local[19] + $t1 = local[17] $t0 = $t1 - local[19] = $t1 + local[17] = $t1 local[23] = $t0 - $t0 = local[16] - $t1 = local[30] - $t0 = $t1 - local[30] = $t1 - local[16] = $t0 + goto :if101_end +if101_else: $t0 = local[15] - $t0 = $s6 + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 local[15] = $t0 + $t0 = local[28] + $s0 = $t0 + local[28] = $t0 + $t0 = local[19] + $t1 = local[15] + $t0 = LtS($t1 $s0 ) + local[15] = $t1 + local[19] = $t0 + $t0 = local[19] + $s1 = $t0 + local[19] = $t0 + $t4 = $s1 + $t5 = $t4 $t0 = local[20] - $t1 = local[16] - $t2 = local[15] - $t0 = LtS($t1 $t2 ) - local[15] = $t2 - local[16] = $t1 + $t0 = Eq($t5 0 ) local[20] = $t0 - $t0 = local[17] + $t0 = local[53] $t1 = local[20] $t0 = $t1 local[20] = $t1 - local[17] = $t0 - $t0 = local[17] - if0 $t0 goto :if53_else - local[17] = $t0 -if53_body: - $t4 = 0 - goto :if53_end -if53_else: - $t0 = local[30] - $t3 = $t0 - local[30] = $t0 + local[53] = $t0 + $t0 = local[54] + $t1 = local[53] + $t0 = $t1 + local[53] = $t1 + local[54] = $t0 + $t0 = local[54] + $t7 = $t0 + local[54] = $t0 + if0 $t7 goto :if108_else +if108_body: + $s3 = 0 + $t3 = $s3 $t0 = local[23] - $s0 = $t0 + $t0 = $t3 local[23] = $t0 - $s3 = LtS($t3 $s0 ) - $t5 = Eq($s3 0 ) - $s1 = $t5 - if0 $s1 goto :if57_else -if57_body: - $t4 = 0 - goto :if57_end -if57_else: - $s4 = 1 - $t0 = local[14] + goto :if108_end +if108_else: + $t6 = 1 + $t0 = local[38] + $t0 = $t6 + local[38] = $t0 + $t0 = local[38] + $s4 = $t0 + local[38] = $t0 + $t0 = local[40] $t0 = 1 + local[40] = $t0 + $t0 = local[39] + $t1 = local[40] + $t0 = $t1 + local[40] = $t1 + local[39] = $t0 + $t0 = local[14] + $t1 = local[39] + $t0 = $t1 + local[39] = $t1 local[14] = $t0 - $s7 = [$s5+20] -if57_end: -if53_end: - $t7 = $s7 - $t0 = local[25] + $t0 = local[49] + $t0 = [$s6+20] + local[49] = $t0 + $t0 = local[48] + $t1 = local[49] + $t0 = $t1 + local[49] = $t1 + local[48] = $t0 + $t0 = local[48] + $s5 = $t0 + local[48] = $t0 +if108_end: +if101_end: + $t0 = local[50] + $t0 = $s5 + local[50] = $t0 + $t0 = local[43] $t0 = 1 - local[25] = $t0 - $t0 = local[25] - $t6 = Add($t7 $t0 ) - local[25] = $t0 - $s7 = $t6 - goto :while42_test -while42_end: + local[43] = $t0 + $t0 = local[52] + $t1 = local[50] + $t2 = local[43] + $t0 = Add($t1 $t2 ) + local[43] = $t2 + local[50] = $t1 + local[52] = $t0 + $t0 = local[41] + $t1 = local[52] + $t0 = $t1 + local[52] = $t1 + local[41] = $t0 + $t0 = local[41] + $s5 = $t0 + local[41] = $t0 + goto :while83_test +while83_end: $t0 = local[14] - $s3 = $t0 + $t4 = $t0 local[14] = $t0 - $v0 = $s3 + $t5 = $t4 + $t4 = $t5 + $v0 = $t4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -385,7 +576,7 @@ while42_end: $s6 = local[6] $s7 = local[7] ret -func LS_Init [in 0, out 0, local 27] +func LS_Init [in 0, out 0, local 37] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -394,16 +585,20 @@ func LS_Init [in 0, out 0, local 27] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+20] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s4 = $s7 + [$s5+20] = $s4 + $s4 = $s6 + $s6 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s7 + $a0 = $s6 call :AllocArray $t3 = local[8] $t4 = local[9] @@ -411,99 +606,164 @@ func LS_Init [in 0, out 0, local 27] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - [$s6+16] = $s5 - $s5 = 1 - $s7 = [$s6+20] + $s4 = $v0 + $s6 = $s4 + $s4 = $s6 + [$s5+16] = $s4 $s4 = 1 - $s3 = Add($s7 $s4 ) - $s4 = $s3 -while70_test: - $s3 = $s5 + $s6 = $s4 + $s4 = $s6 + $s6 = [$s5+20] + $s7 = 1 + $s3 = Add($s6 $s7 ) + $s7 = $s3 + $s3 = $s7 +while146_test: + $s7 = $s4 + $t0 = local[34] + $t0 = [$s5+20] + local[34] = $t0 + $t0 = local[35] + $t1 = local[34] + $t0 = $t1 + local[34] = $t1 + local[35] = $t0 + $t0 = local[31] + $t1 = local[35] + $t0 = $t1 + local[35] = $t1 + local[31] = $t0 + $t0 = local[36] + $t1 = local[31] + $t0 = LtS($s7 $t1 ) + local[31] = $t1 + local[36] = $t0 + $t0 = local[30] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[30] = $t0 + $t0 = local[33] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[33] = $t0 + $t0 = local[33] + if0 $t0 goto :while146_end + local[33] = $t0 +while146_body: $t0 = local[26] - $t0 = [$s6+20] + $t0 = 2 local[26] = $t0 - $t0 = local[25] + $t0 = local[29] + $t0 = $s4 + local[29] = $t0 + $t0 = local[27] $t1 = local[26] - $t0 = LtS($s3 $t1 ) + $t2 = local[29] + $t0 = MulS($t1 $t2 ) + local[29] = $t2 local[26] = $t1 - local[25] = $t0 - $t0 = local[20] - $t1 = local[25] + local[27] = $t0 + $t0 = local[28] + $t1 = local[27] $t0 = $t1 - local[25] = $t1 - local[20] = $t0 + local[27] = $t1 + local[28] = $t0 + $t0 = local[32] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 + local[32] = $t0 + $t0 = local[15] + $t0 = $s3 + local[15] = $t0 + $t0 = local[21] + $t0 = 3 + local[21] = $t0 + $t0 = local[24] + $t1 = local[15] + $t2 = local[21] + $t0 = Sub($t1 $t2 ) + local[21] = $t2 + local[15] = $t1 + local[24] = $t0 $t0 = local[20] - if0 $t0 goto :while70_end + $t1 = local[24] + $t0 = $t1 + local[24] = $t1 local[20] = $t0 -while70_body: + $t0 = local[25] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[25] = $t0 + $t0 = local[23] + $t0 = [$s5+16] + local[23] = $t0 $t0 = local[17] - $t0 = 2 + $t0 = $s4 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 + $t0 = $t1 local[17] = $t1 - local[21] = $t0 + local[16] = $t0 $t0 = local[22] - $t1 = local[21] - $t0 = $t1 - local[21] = $t1 + $t1 = local[16] + $t0 = MulS($t1 4 ) + local[16] = $t1 + local[22] = $t0 + $t0 = local[22] + $t1 = local[22] + $t0 = Add($t1 4 ) + local[22] = $t1 + local[22] = $t0 + $t0 = local[22] + $t1 = local[23] + $t2 = local[22] + $t0 = Add($t1 $t2 ) + local[22] = $t2 + local[23] = $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 + $t1 = local[32] + $t0 = $t1 + local[32] = $t1 local[18] = $t0 + $t0 = local[14] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[14] = $t0 $t0 = local[19] $t1 = local[18] - $t0 = $t1 + $t2 = local[14] + $t0 = Add($t1 $t2 ) + local[14] = $t2 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 + $s2 = $t0 local[19] = $t0 - $t7 = Add($t4 $t5 ) - [$t6+0] = $t7 - $s7 = $s5 - $s0 = 1 - $s2 = Add($s7 $s0 ) - $s5 = $s2 - $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: + $t0 = local[22] + [$t0+0] = $s2 + local[22] = $t0 + $t5 = $s4 + $t6 = 1 + $s6 = Add($t5 $t6 ) + $t3 = $s6 + $s4 = $t3 + $s0 = $s3 + $s1 = 1 + $t4 = Sub($s0 $s1 ) + $t7 = $t4 + $s3 = $t7 + goto :while146_test +while146_end: $t3 = 0 + $t4 = $t3 + $t3 = $t4 $v0 = $t3 $s0 = local[0] $s1 = local[1] diff --git a/output/LinkedList.s b/output/LinkedList.s new file mode 100644 index 0000000..930d5a5 --- /dev/null +++ b/output/LinkedList.s @@ -0,0 +1,2617 @@ +.data +functable_Element: + Element_Init + Element_GetAge + Element_GetSalary + Element_GetMarried + Element_Equal + Element_Compare +functable_List: + List_Init + List_InitNew + List_Insert + List_SetNext + List_Delete + List_Search + List_GetEnd + List_GetElem + List_GetNext + List_Print +functable_LL: + LL_Start +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_LL + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s5 $s6 + move $s6 $s5 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Element_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s3 $a3 + move $s4 $s6 + move $s6 $s4 + sw $s6 0($s5) + move $s6 $s7 + move $s7 $s6 + sw $s7 0($s5) + move $s7 $s3 + move $s3 $s7 + sw $s3 0($s5) + li $s3 1 + move $s5 $s3 + move $s3 $s5 + move $v0 $s3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Element_GetAge: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Element_GetSalary: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Element_GetMarried: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Element_Equal: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + li $s5 1 + move $s4 $s5 + move $s5 $s4 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $s4 $s3 + move $s3 $s6 + lw $s3 0($s6) + move $s2 $s4 + move $s4 $s2 + lw $s2 0($s6) + move $s1 $s2 + lw $s3 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + move $a2 $s1 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s1 $s2 + move $a0 $s1 + li $t9 0 +NULL $s2 $a0 $t9 + move $s1 $s2 + move $s2 $s1 + move $s1 $s2 + beqz $s1 if32_else +if32_body: + li $s1 0 + move $s2 $s1 + move $s5 $s2 + j if32_end +if32_else: + move $s2 $s7 + move $s7 $s2 + lw $s2 0($s7) + lw $s1 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s1 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s1 $s2 + move $s2 $s1 + move $s1 $s6 + lw $s1 0($s6) + move $s4 $s2 + move $s2 $s4 + lw $s4 0($s6) + move $s3 $s4 + lw $s1 0($s1) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s2 + move $a2 $s3 + jalr $s1 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $a0 $s3 + li $t9 0 +NULL $s4 $a0 $t9 + move $s3 $s4 + move $s4 $s3 + move $s3 $s4 + beqz $s3 if51_else +if51_body: + li $s3 0 + move $s4 $s3 + move $s5 $s4 + j if51_end +if51_else: + lw $s4 0($s6) + move $s6 $s4 + move $s4 $s6 + beqz $s4 if65_else +if65_body: + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s6 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s6 $s4 + move $a0 $s6 + li $t9 0 +NULL $s4 $a0 $t9 + move $s6 $s4 + move $s4 $s6 + move $s6 $s4 + beqz $s6 if68_else +if68_body: + li $s6 0 + move $s4 $s6 + move $s5 $s4 + j if68_end +if68_else: + li $s4 0 + move $s6 $s4 + move $s4 $s6 +if68_end: + j if65_end +if65_else: + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s3 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s3 $s6 + move $s6 $s3 + beqz $s6 if81_else +if81_body: + li $s6 0 + move $s3 $s6 + move $s5 $s3 + j if81_end +if81_else: + li $s3 0 + move $s6 $s3 + move $s4 $s6 +if81_end: +if65_end: +if51_end: +if32_end: + move $s6 $s5 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Element_Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + li $s4 0 + move $s5 $s4 + move $s4 $s5 + move $s5 $s7 + li $s3 1 + move $a0 $s5 + move $t9 $s3 + add $s2 $a0 $t9 + move $s3 $s2 + move $s2 $s3 + move $s3 $s6 + move $s5 $s7 + move $a0 $s3 + move $t9 $s5 + slt $s7 $a0 $t9 + move $s5 $s7 + move $s7 $s5 + beqz $s7 if100_else +if100_body: + li $s7 0 + move $s5 $s7 + move $s4 $s5 + j if100_end +if100_else: + move $s5 $s6 + move $s6 $s2 + move $a0 $s5 + move $t9 $s6 + slt $s2 $a0 $t9 + move $s6 $s2 + move $s2 $s6 + move $s6 $s2 + move $a0 $s6 + li $t9 0 +NULL $s2 $a0 $t9 + move $s6 $s2 + move $s2 $s6 + move $s6 $s2 + beqz $s6 if107_else +if107_body: + li $s6 0 + move $s2 $s6 + move $s4 $s2 + j if107_end +if107_else: + li $s2 1 + move $s6 $s2 + move $s4 $s6 +if107_end: +if100_end: + move $s6 $s4 + move $s4 $s6 + move $s6 $s4 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 1 + move $s5 $s7 + sw $s5 0($s6) + li $s5 1 + move $s6 $s5 + move $s5 $s6 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_InitNew: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s3 $a3 + move $s4 $s3 + move $s3 $s4 + sw $s3 0($s5) + move $s3 $s6 + move $s6 $s3 + sw $s6 0($s5) + move $s6 $s7 + move $s7 $s6 + sw $s7 0($s5) + li $s7 1 + move $s5 $s7 + move $s7 $s5 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + move $s6 $s5 + move $s5 $s6 + li $a0 52 + jal _heapAlloc + move $s6 $v0 + la $t9 functable_List + sw $t9 0($s6) + move $s4 $s6 + move $s6 $s4 + move $s4 $s6 + move $s6 $s4 + move $s4 $s6 + lw $s6 0($s4) + lw $s3 0($s6) + move $s6 $s7 + move $s7 $s6 + move $s6 $s5 + move $s5 $s6 + li $s6 0 + move $s2 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + move $a1 $s7 + move $a2 $s5 + move $a3 $s2 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s2 $s6 + move $s6 $s2 + move $s6 $s4 + move $s4 $s6 + move $s6 $s4 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_SetNext: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 396 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + move $s4 $s5 + lw $t0 -68($fp) + move $t0 $s4 + sw $t0 -68($fp) + li $s4 0 + move $s3 $s4 + move $s4 $s3 + li $s3 0 + li $s2 1 + move $a0 $s3 + move $t9 $s2 + sub $s1 $a0 $t9 + move $s2 $s1 + move $s1 $s2 + move $s2 $s6 + move $s3 $s2 + move $s2 $s3 + move $s3 $s6 + move $s0 $s3 + move $s3 $s0 + lw $s0 0($s6) + move $t7 $s0 + move $s0 $t7 + lw $t7 0($s6) + move $s6 $t7 + move $t7 $s6 +while178_test: + move $s6 $s0 + lw $t0 -168($fp) + move $t0 $s6 + sw $t0 -168($fp) + lw $t0 -332($fp) + lw $t1 -168($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -168($fp) + sw $t0 -332($fp) + lw $t0 -132($fp) + lw $t1 -332($fp) + move $t0 $t1 + sw $t1 -332($fp) + sw $t0 -132($fp) + lw $t0 -156($fp) + lw $t1 -132($fp) + move $t0 $t1 + sw $t1 -132($fp) + sw $t0 -156($fp) + lw $t0 -152($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -152($fp) + lw $t0 -160($fp) + move $t0 $s4 + sw $t0 -160($fp) + lw $t0 -140($fp) + lw $t1 -160($fp) + move $t0 $t1 + sw $t1 -160($fp) + sw $t0 -140($fp) + lw $t0 -164($fp) + lw $t1 -140($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -140($fp) + sw $t0 -164($fp) + lw $t0 -136($fp) + lw $t1 -164($fp) + move $t0 $t1 + sw $t1 -164($fp) + sw $t0 -136($fp) + lw $t0 -148($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -148($fp) + lw $t0 -144($fp) + lw $t1 -148($fp) + move $t0 $t1 + sw $t1 -148($fp) + sw $t0 -144($fp) + lw $t0 -128($fp) + lw $t1 -152($fp) + li $a0 1 + move $t9 $t1 +NULL $t0 $a0 $t9 + sw $t1 -152($fp) + sw $t0 -128($fp) + lw $t0 -72($fp) + lw $t1 -144($fp) + li $a0 1 + move $t9 $t1 +NULL $t0 $a0 $t9 + sw $t1 -144($fp) + sw $t0 -72($fp) + lw $t0 -336($fp) + lw $t1 -128($fp) + lw $t2 -72($fp) + move $a0 $t1 + move $t9 $t2 +NULL $t0 $a0 $t9 + sw $t2 -72($fp) + sw $t1 -128($fp) + sw $t0 -336($fp) + lw $t0 -336($fp) + move $t3 $t0 + sw $t0 -336($fp) + lw $t0 -112($fp) + move $t0 $t3 + sw $t0 -112($fp) + lw $t0 -112($fp) + beqz $t0 while178_end + sw $t0 -112($fp) +while178_body: + lw $t0 -124($fp) + move $t0 $s7 + sw $t0 -124($fp) + lw $t0 -124($fp) + move $s7 $t0 + sw $t0 -124($fp) + lw $t0 -116($fp) + lw $t0 0($s7) + sw $t0 -116($fp) + lw $t0 -96($fp) + lw $t1 -116($fp) + lw $t0 0($t1) + sw $t1 -116($fp) + sw $t0 -96($fp) + lw $t0 -92($fp) + move $t0 $t7 + sw $t0 -92($fp) + lw $t0 -104($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -104($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -104($fp) + move $a1 $t0 + sw $t0 -104($fp) + lw $t0 -96($fp) + lw $t1 -96($fp) + jalr $t1 + sw $t1 -96($fp) + sw $t0 -96($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -108($fp) + move $t0 $v0 + sw $t0 -108($fp) + lw $t0 -100($fp) + lw $t1 -108($fp) + move $t0 $t1 + sw $t1 -108($fp) + sw $t0 -100($fp) + lw $t0 -212($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -212($fp) + lw $t0 -212($fp) + beqz $t0 if196_else + sw $t0 -212($fp) +if196_body: + lw $t0 -220($fp) + li $t0 1 + sw $t0 -220($fp) + lw $t0 -216($fp) + lw $t1 -220($fp) + move $t0 $t1 + sw $t1 -220($fp) + sw $t0 -216($fp) + lw $t0 -216($fp) + move $s4 $t0 + sw $t0 -216($fp) + lw $t0 -236($fp) + move $t0 $s1 + sw $t0 -236($fp) + lw $t0 -248($fp) + li $t0 0 + sw $t0 -248($fp) + lw $t0 -240($fp) + lw $t1 -236($fp) + lw $t2 -248($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -248($fp) + sw $t1 -236($fp) + sw $t0 -240($fp) + lw $t0 -244($fp) + lw $t1 -240($fp) + move $t0 $t1 + sw $t1 -240($fp) + sw $t0 -244($fp) + lw $t0 -228($fp) + lw $t1 -244($fp) + move $t0 $t1 + sw $t1 -244($fp) + sw $t0 -228($fp) + lw $t0 -228($fp) + beqz $t0 if206_else + sw $t0 -228($fp) +if206_body: + lw $t0 -232($fp) + move $t0 $s2 + sw $t0 -232($fp) + lw $t0 -232($fp) + move $s2 $t0 + sw $t0 -232($fp) + lw $t0 -176($fp) + lw $t0 0($s2) + sw $t0 -176($fp) + lw $t0 -172($fp) + lw $t1 -176($fp) + lw $t0 0($t1) + sw $t1 -176($fp) + sw $t0 -172($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -172($fp) + lw $t1 -172($fp) + jalr $t1 + sw $t1 -172($fp) + sw $t0 -172($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -224($fp) + move $t0 $v0 + sw $t0 -224($fp) + lw $t0 -184($fp) + lw $t1 -224($fp) + move $t0 $t1 + sw $t1 -224($fp) + sw $t0 -184($fp) + lw $t0 -68($fp) + lw $t1 -184($fp) + move $t0 $t1 + sw $t1 -184($fp) + sw $t0 -68($fp) + j if206_end +if206_else: + lw $t0 -200($fp) + li $t0 0 + sw $t0 -200($fp) + lw $t0 -196($fp) + li $t0 555 + sw $t0 -196($fp) + lw $t0 -180($fp) + lw $t1 -200($fp) + lw $t2 -196($fp) + move $a0 $t1 + move $t9 $t2 + sub $t0 $a0 $t9 + sw $t2 -196($fp) + sw $t1 -200($fp) + sw $t0 -180($fp) + lw $t0 -208($fp) + lw $t1 -180($fp) + move $t0 $t1 + sw $t1 -180($fp) + sw $t0 -208($fp) + lw $t0 -204($fp) + lw $t1 -208($fp) + move $t0 $t1 + sw $t1 -208($fp) + sw $t0 -204($fp) + lw $t0 -204($fp) + move $a0 $t0 + jal _print + sw $t0 -204($fp) + lw $t0 -308($fp) + move $t0 $s3 + sw $t0 -308($fp) + lw $t0 -308($fp) + move $s3 $t0 + sw $t0 -308($fp) + lw $t0 -296($fp) + lw $t0 0($s3) + sw $t0 -296($fp) + lw $t0 -292($fp) + lw $t1 -296($fp) + lw $t0 0($t1) + sw $t1 -296($fp) + sw $t0 -292($fp) + lw $t0 -300($fp) + move $t0 $s2 + sw $t0 -300($fp) + lw $t0 -300($fp) + move $s2 $t0 + sw $t0 -300($fp) + lw $t0 -320($fp) + lw $t0 0($s2) + sw $t0 -320($fp) + lw $t0 -316($fp) + lw $t1 -320($fp) + lw $t0 0($t1) + sw $t1 -320($fp) + sw $t0 -316($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -316($fp) + lw $t1 -316($fp) + jalr $t1 + sw $t1 -316($fp) + sw $t0 -316($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -304($fp) + move $t0 $v0 + sw $t0 -304($fp) + lw $t0 -328($fp) + lw $t1 -304($fp) + move $t0 $t1 + sw $t1 -304($fp) + sw $t0 -328($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s3 + lw $t0 -328($fp) + move $a1 $t0 + sw $t0 -328($fp) + lw $t0 -292($fp) + lw $t1 -292($fp) + jalr $t1 + sw $t1 -292($fp) + sw $t0 -292($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -188($fp) + move $t0 $v0 + sw $t0 -188($fp) + lw $t0 -324($fp) + lw $t1 -188($fp) + move $t0 $t1 + sw $t1 -188($fp) + sw $t0 -324($fp) + lw $t0 -192($fp) + lw $t1 -324($fp) + move $t0 $t1 + sw $t1 -324($fp) + sw $t0 -192($fp) + lw $t0 -272($fp) + li $t0 0 + sw $t0 -272($fp) + lw $t0 -268($fp) + li $t0 555 + sw $t0 -268($fp) + lw $t0 -312($fp) + lw $t1 -272($fp) + lw $t2 -268($fp) + move $a0 $t1 + move $t9 $t2 + sub $t0 $a0 $t9 + sw $t2 -268($fp) + sw $t1 -272($fp) + sw $t0 -312($fp) + lw $t0 -256($fp) + lw $t1 -312($fp) + move $t0 $t1 + sw $t1 -312($fp) + sw $t0 -256($fp) + lw $t0 -252($fp) + lw $t1 -256($fp) + move $t0 $t1 + sw $t1 -256($fp) + sw $t0 -252($fp) + lw $t0 -252($fp) + move $a0 $t0 + jal _print + sw $t0 -252($fp) +if206_end: + j if196_end +if196_else: + lw $t0 -260($fp) + li $t0 0 + sw $t0 -260($fp) + lw $t0 -280($fp) + lw $t1 -260($fp) + move $t0 $t1 + sw $t1 -260($fp) + sw $t0 -280($fp) + lw $t0 -264($fp) + lw $t1 -280($fp) + move $t0 $t1 + sw $t1 -280($fp) + sw $t0 -264($fp) +if196_end: + lw $t0 -288($fp) + move $t0 $s4 + sw $t0 -288($fp) + lw $t0 -284($fp) + lw $t1 -288($fp) + move $t0 $t1 + sw $t1 -288($fp) + sw $t0 -284($fp) + lw $t0 -276($fp) + lw $t1 -284($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -284($fp) + sw $t0 -276($fp) + lw $t0 -364($fp) + lw $t1 -276($fp) + move $t0 $t1 + sw $t1 -276($fp) + sw $t0 -364($fp) + lw $t0 -372($fp) + lw $t1 -364($fp) + move $t0 $t1 + sw $t1 -364($fp) + sw $t0 -372($fp) + lw $t0 -368($fp) + lw $t1 -372($fp) + move $t0 $t1 + sw $t1 -372($fp) + sw $t0 -368($fp) + lw $t0 -368($fp) + beqz $t0 if238_else + sw $t0 -368($fp) +if238_body: + lw $t0 -348($fp) + move $t0 $s2 + sw $t0 -348($fp) + lw $t0 -340($fp) + lw $t1 -348($fp) + move $t0 $t1 + sw $t1 -348($fp) + sw $t0 -340($fp) + lw $t0 -340($fp) + move $s3 $t0 + sw $t0 -340($fp) + lw $t0 -356($fp) + move $t0 $s2 + sw $t0 -356($fp) + lw $t0 -356($fp) + move $s2 $t0 + sw $t0 -356($fp) + lw $t0 -380($fp) + lw $t0 0($s2) + sw $t0 -380($fp) + lw $t0 -376($fp) + lw $t1 -380($fp) + lw $t0 0($t1) + sw $t1 -380($fp) + sw $t0 -376($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -376($fp) + lw $t1 -376($fp) + jalr $t1 + sw $t1 -376($fp) + sw $t0 -376($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -360($fp) + move $t0 $v0 + sw $t0 -360($fp) + lw $t0 -392($fp) + lw $t1 -360($fp) + move $t0 $t1 + sw $t1 -360($fp) + sw $t0 -392($fp) + lw $t0 -392($fp) + move $s2 $t0 + sw $t0 -392($fp) + move $t6 $s2 + move $s2 $t6 + lw $t5 0($s2) + lw $t4 0($t5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -120($fp) + move $t0 $v0 + sw $t0 -120($fp) + lw $t0 -120($fp) + move $s5 $t0 + sw $t0 -120($fp) + move $s0 $s5 + lw $t0 -80($fp) + move $t0 $s2 + sw $t0 -80($fp) + lw $t0 -80($fp) + move $s2 $t0 + sw $t0 -80($fp) + lw $t0 -84($fp) + lw $t0 0($s2) + sw $t0 -84($fp) + lw $t0 -88($fp) + lw $t1 -84($fp) + lw $t0 0($t1) + sw $t1 -84($fp) + sw $t0 -88($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -88($fp) + lw $t1 -88($fp) + jalr $t1 + sw $t1 -88($fp) + sw $t0 -88($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -76($fp) + move $t0 $v0 + sw $t0 -76($fp) + lw $t0 -396($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -396($fp) + lw $t0 -396($fp) + move $t7 $t0 + sw $t0 -396($fp) + lw $t0 -384($fp) + li $t0 1 + sw $t0 -384($fp) + lw $t0 -388($fp) + lw $t1 -384($fp) + move $t0 $t1 + sw $t1 -384($fp) + sw $t0 -388($fp) + lw $t0 -388($fp) + move $s1 $t0 + sw $t0 -388($fp) + j if238_end +if238_else: + lw $t0 -344($fp) + li $t0 0 + sw $t0 -344($fp) + lw $t0 -352($fp) + lw $t1 -344($fp) + move $t0 $t1 + sw $t1 -344($fp) + sw $t0 -352($fp) + lw $t0 -264($fp) + lw $t1 -352($fp) + move $t0 $t1 + sw $t1 -352($fp) + sw $t0 -264($fp) +if238_end: + j while178_test +while178_end: + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + move $t3 $s5 + move $s5 $t3 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 396 + jr $ra +List_Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 168 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + li $s5 0 + move $s4 $s5 + lw $t0 -68($fp) + move $t0 $s4 + sw $t0 -68($fp) + move $s4 $s6 + move $s3 $s4 + move $s4 $s3 + lw $s3 0($s6) + move $s2 $s3 + move $s3 $s2 + lw $s2 0($s6) + move $s6 $s2 + move $s2 $s6 +while276_test: + move $s6 $s3 + lw $t0 -116($fp) + move $t0 $s6 + sw $t0 -116($fp) + lw $t0 -144($fp) + lw $t1 -116($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -116($fp) + sw $t0 -144($fp) + lw $t0 -108($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -108($fp) + lw $t0 -120($fp) + lw $t1 -108($fp) + move $t0 $t1 + sw $t1 -108($fp) + sw $t0 -120($fp) + lw $t0 -88($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -88($fp) + lw $t0 -88($fp) + beqz $t0 while276_end + sw $t0 -88($fp) +while276_body: + lw $t0 -104($fp) + move $t0 $s7 + sw $t0 -104($fp) + lw $t0 -104($fp) + move $s7 $t0 + sw $t0 -104($fp) + lw $t0 -96($fp) + lw $t0 0($s7) + sw $t0 -96($fp) + lw $t0 -96($fp) + lw $t4 0($t0) + sw $t0 -96($fp) + move $t6 $s2 + lw $t0 -72($fp) + move $t0 $t6 + sw $t0 -72($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -72($fp) + move $a1 $t0 + sw $t0 -72($fp) + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -80($fp) + move $t0 $v0 + sw $t0 -80($fp) + lw $t0 -80($fp) + move $t3 $t0 + sw $t0 -80($fp) + lw $t0 -168($fp) + move $t0 $t3 + sw $t0 -168($fp) + lw $t0 -168($fp) + beqz $t0 if283_else + sw $t0 -168($fp) +if283_body: + lw $t0 -164($fp) + li $t0 1 + sw $t0 -164($fp) + lw $t0 -124($fp) + lw $t1 -164($fp) + move $t0 $t1 + sw $t1 -164($fp) + sw $t0 -124($fp) + lw $t0 -68($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -68($fp) + j if283_end +if283_else: + lw $t0 -148($fp) + li $t0 0 + sw $t0 -148($fp) + lw $t0 -160($fp) + lw $t1 -148($fp) + move $t0 $t1 + sw $t1 -148($fp) + sw $t0 -160($fp) + lw $t0 -152($fp) + lw $t1 -160($fp) + move $t0 $t1 + sw $t1 -160($fp) + sw $t0 -152($fp) +if283_end: + lw $t0 -132($fp) + move $t0 $s4 + sw $t0 -132($fp) + lw $t0 -132($fp) + move $s4 $t0 + sw $t0 -132($fp) + lw $t0 -128($fp) + lw $t0 0($s4) + sw $t0 -128($fp) + lw $t0 -140($fp) + lw $t1 -128($fp) + lw $t0 0($t1) + sw $t1 -128($fp) + sw $t0 -140($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + lw $t0 -140($fp) + lw $t1 -140($fp) + jalr $t1 + sw $t1 -140($fp) + sw $t0 -140($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -156($fp) + move $t0 $v0 + sw $t0 -156($fp) + lw $t0 -136($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -136($fp) + lw $t0 -136($fp) + move $s4 $t0 + sw $t0 -136($fp) + move $s0 $s4 + move $s4 $s0 + lw $s1 0($s4) + lw $t0 -84($fp) + lw $t0 0($s1) + sw $t0 -84($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + lw $t0 -84($fp) + lw $t1 -84($fp) + jalr $t1 + sw $t1 -84($fp) + sw $t0 -84($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -112($fp) + move $t0 $v0 + sw $t0 -112($fp) + lw $t0 -76($fp) + lw $t1 -112($fp) + move $t0 $t1 + sw $t1 -112($fp) + sw $t0 -76($fp) + lw $t0 -76($fp) + move $s3 $t0 + sw $t0 -76($fp) + lw $t0 -92($fp) + move $t0 $s4 + sw $t0 -92($fp) + lw $t0 -92($fp) + move $s4 $t0 + sw $t0 -92($fp) + lw $t5 0($s4) + lw $t7 0($t5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + jalr $t7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -100($fp) + move $t0 $v0 + sw $t0 -100($fp) + lw $t0 -100($fp) + move $s5 $t0 + sw $t0 -100($fp) + move $s2 $s5 + j while276_test +while276_end: + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + move $t3 $s5 + move $s5 $t3 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 168 + jr $ra +List_GetEnd: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_GetElem: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_GetNext: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +List_Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 132 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $s6 $s7 + move $s5 $s6 + move $s6 $s5 + lw $s5 0($s7) + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s7) + move $s7 $s4 + move $s4 $s7 +while328_test: + move $s7 $s5 + lw $t0 -92($fp) + move $t0 $s7 + sw $t0 -92($fp) + lw $t0 -124($fp) + lw $t1 -92($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -92($fp) + sw $t0 -124($fp) + lw $t0 -84($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -84($fp) + lw $t0 -104($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -104($fp) + lw $t0 -96($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -96($fp) + lw $t0 -96($fp) + beqz $t0 while328_end + sw $t0 -96($fp) +while328_body: + move $t3 $s4 + move $s4 $t3 + lw $t0 -72($fp) + lw $t0 0($s4) + sw $t0 -72($fp) + lw $t0 -72($fp) + lw $t6 0($t0) + sw $t0 -72($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + jalr $t6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -68($fp) + move $t0 $v0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t7 $t0 + sw $t0 -68($fp) + move $t4 $t7 + move $a0 $t4 + jal _print + move $s2 $s6 + move $s6 $s2 + lw $s3 0($s6) + lw $s0 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t5 $v0 + move $s1 $t5 + move $s6 $s1 + lw $t0 -128($fp) + move $t0 $s6 + sw $t0 -128($fp) + lw $t0 -128($fp) + move $s6 $t0 + sw $t0 -128($fp) + lw $t0 -76($fp) + lw $t0 0($s6) + sw $t0 -76($fp) + lw $t0 -112($fp) + lw $t1 -76($fp) + lw $t0 0($t1) + sw $t1 -76($fp) + sw $t0 -112($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + lw $t0 -112($fp) + lw $t1 -112($fp) + jalr $t1 + sw $t1 -112($fp) + sw $t0 -112($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -132($fp) + move $t0 $v0 + sw $t0 -132($fp) + lw $t0 -108($fp) + lw $t1 -132($fp) + move $t0 $t1 + sw $t1 -132($fp) + sw $t0 -108($fp) + lw $t0 -108($fp) + move $s5 $t0 + sw $t0 -108($fp) + lw $t0 -116($fp) + move $t0 $s6 + sw $t0 -116($fp) + lw $t0 -116($fp) + move $s6 $t0 + sw $t0 -116($fp) + lw $t0 -88($fp) + lw $t0 0($s6) + sw $t0 -88($fp) + lw $t0 -80($fp) + lw $t1 -88($fp) + lw $t0 0($t1) + sw $t1 -88($fp) + sw $t0 -80($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + lw $t0 -80($fp) + lw $t1 -80($fp) + jalr $t1 + sw $t1 -80($fp) + sw $t0 -80($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -120($fp) + move $t0 $v0 + sw $t0 -120($fp) + lw $t0 -100($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -100($fp) + lw $t0 -100($fp) + move $s4 $t0 + sw $t0 -100($fp) + j while328_test +while328_end: + li $t3 1 + move $t4 $t3 + move $t3 $t4 + move $v0 $t3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 132 + jr $ra +LL_Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + li $a0 52 + jal _heapAlloc + move $s6 $v0 + la $t9 functable_List + sw $t9 0($s6) + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s5 $s6 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + move $s5 $s7 + move $s7 $s5 + move $s5 $s7 + lw $s7 0($s5) + lw $s4 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s6 $s4 + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s5) + lw $s7 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s7 $s4 + move $s6 $s7 + li $a0 36 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Element + sw $t9 0($s7) + move $s4 $s7 + move $s7 $s4 + move $s4 $s7 + move $s7 $s4 + move $s4 $s7 + lw $s7 0($s4) + lw $s3 0($s7) + li $s7 25 + move $s2 $s7 + li $s7 37000 + move $s1 $s7 + li $s7 0 + move $s0 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + move $a1 $s2 + move $a2 $s1 + move $a3 $s0 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s0 $s7 + move $s6 $s0 + move $s0 $s5 + move $s5 $s0 + lw $s0 0($s5) + lw $s7 0($s0) + move $s0 $s4 + move $s1 $s0 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s1 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s1 $s0 + move $s5 $s1 + move $s1 $s5 + move $s5 $s1 + lw $s1 0($s5) + lw $s0 0($s1) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + move $s0 $s1 + move $s6 $s0 + li $s0 10000000 + move $s1 $s0 + move $s0 $s1 + move $a0 $s0 + jal _print + li $a0 36 + jal _heapAlloc + move $s0 $v0 + la $t9 functable_Element + sw $t9 0($s0) + move $s1 $s0 + move $s0 $s1 + move $s4 $s0 + move $s0 $s4 + move $s4 $s0 + lw $s0 0($s4) + lw $s1 0($s0) + li $s0 39 + move $s7 $s0 + li $s0 42000 + move $s2 $s0 + li $s0 1 + move $s3 $s0 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + move $a1 $s7 + move $a2 $s2 + move $a3 $s3 + jalr $s1 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s3 $s0 + move $s6 $s3 + move $s3 $s4 + move $s0 $s3 + move $s3 $s0 + move $s0 $s5 + move $s5 $s0 + lw $s0 0($s5) + lw $s2 0($s0) + move $s0 $s4 + move $s7 $s0 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s7 $s0 + move $s5 $s7 + move $s7 $s5 + move $s5 $s7 + lw $s7 0($s5) + lw $s0 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s0 $s7 + move $s6 $s0 + li $s0 10000000 + move $s7 $s0 + move $s0 $s7 + move $a0 $s0 + jal _print + li $a0 36 + jal _heapAlloc + move $s0 $v0 + la $t9 functable_Element + sw $t9 0($s0) + move $s7 $s0 + move $s0 $s7 + move $s4 $s0 + move $s0 $s4 + move $s4 $s0 + lw $s0 0($s4) + lw $s7 0($s0) + li $s0 22 + move $s2 $s0 + li $s0 34000 + move $s1 $s0 + li $s0 0 + move $t7 $s0 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + move $a1 $s2 + move $a2 $s1 + move $a3 $t7 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $t7 $s0 + move $s6 $t7 + move $t7 $s5 + move $s5 $t7 + lw $t7 0($s5) + lw $s0 0($t7) + move $t7 $s4 + move $s1 $t7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s1 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t7 $v0 + move $s1 $t7 + move $s5 $s1 + move $s1 $s5 + move $s5 $s1 + lw $s1 0($s5) + lw $t7 0($s1) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $t7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + move $t7 $s1 + move $s6 $t7 + li $a0 36 + jal _heapAlloc + move $t7 $v0 + la $t9 functable_Element + sw $t9 0($t7) + move $s1 $t7 + move $t7 $s1 + move $s1 $t7 + move $t7 $s1 + move $s1 $t7 + lw $t7 0($s1) + lw $s0 0($t7) + li $t7 27 + move $s2 $t7 + li $t7 34000 + move $s7 $t7 + li $t7 0 + move $t6 $t7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s1 + move $a1 $s2 + move $a2 $s7 + move $a3 $t6 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t7 $v0 + move $t6 $t7 + move $s6 $t6 + move $t6 $s5 + move $s5 $t6 + lw $t6 0($s5) + lw $t7 0($t6) + move $t6 $s3 + move $s7 $t6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s7 + jalr $t7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t6 $v0 + move $s7 $t6 + move $t6 $s7 + move $a0 $t6 + jal _print + move $t6 $s5 + move $s5 $t6 + lw $t6 0($s5) + lw $s7 0($t6) + move $t6 $s1 + move $s1 $t6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s1 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t6 $v0 + move $s1 $t6 + move $t6 $s1 + move $a0 $t6 + jal _print + li $t6 10000000 + move $s1 $t6 + move $t6 $s1 + move $a0 $t6 + jal _print + li $a0 36 + jal _heapAlloc + move $t6 $v0 + la $t9 functable_Element + sw $t9 0($t6) + move $s1 $t6 + move $t6 $s1 + move $s4 $t6 + move $t6 $s4 + move $s4 $t6 + lw $t6 0($s4) + lw $s1 0($t6) + li $t6 28 + move $s7 $t6 + li $t6 35000 + move $t7 $t6 + li $t6 0 + move $s2 $t6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + move $a1 $s7 + move $a2 $t7 + move $a3 $s2 + jalr $s1 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t6 $v0 + move $s2 $t6 + move $s6 $s2 + move $s2 $s5 + move $s5 $s2 + lw $s2 0($s5) + lw $t6 0($s2) + move $s2 $s4 + move $t7 $s2 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $t7 + jalr $t6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $t7 $s2 + move $s5 $t7 + move $t7 $s5 + move $s5 $t7 + lw $t7 0($s5) + lw $s2 0($t7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t7 $v0 + move $s2 $t7 + move $s6 $s2 + li $s2 2220000 + move $t7 $s2 + move $s2 $t7 + move $a0 $s2 + jal _print + move $s2 $s5 + move $s5 $s2 + lw $s2 0($s5) + lw $t7 0($s2) + move $s2 $s3 + move $s3 $s2 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s3 + jalr $t7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s3 $s2 + move $s5 $s3 + move $s3 $s5 + move $s5 $s3 + lw $s3 0($s5) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s6 $s2 + li $s2 33300000 + move $s3 $s2 + move $s2 $s3 + move $a0 $s2 + jal _print + move $s2 $s5 + move $s5 $s2 + lw $s2 0($s5) + lw $s3 0($s2) + move $s2 $s4 + move $s4 $s2 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s4 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s4 $s2 + move $s5 $s4 + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s5) + lw $s2 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s2 $s4 + move $s6 $s2 + li $s2 44440000 + move $s6 $s2 + move $s2 $s6 + move $a0 $s2 + jal _print + li $s2 0 + move $s6 $s2 + move $s2 $s6 + move $v0 $s2 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/LinkedList.vaporm b/output/LinkedList.vaporm index 7a65181..1a1733d 100644 --- a/output/LinkedList.vaporm +++ b/output/LinkedList.vaporm @@ -30,15 +30,16 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_LL $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s7 call $s5 $t3 = local[8] $t4 = local[9] @@ -46,9 +47,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s5 = $s7 - PrintIntS($s5 ) + $s6 = $v0 + $s5 = $s6 + $s6 = $s5 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -70,12 +72,20 @@ func Element_Init [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = $a2 - $s4 = $a3 + $s3 = $a3 + $s4 = $s6 + $s6 = $s4 [$s5+24] = $s6 + $s6 = $s7 + $s7 = $s6 [$s5+28] = $s7 - [$s5+32] = $s4 - $s4 = 1 - $v0 = $s4 + $s7 = $s3 + $s3 = $s7 + [$s5+32] = $s3 + $s3 = 1 + $s5 = $s3 + $s3 = $s5 + $v0 = $s3 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -96,6 +106,8 @@ func Element_GetAge [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+24] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -117,6 +129,8 @@ func Element_GetSalary [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+28] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -138,6 +152,8 @@ func Element_GetMarried [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+32] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -157,11 +173,14 @@ func Element_Equal [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 - $s7 = 1 - $s6 = $s6 - $s4 = [$s6+0] + $s6 = $a0 + $s7 = $a1 + $s5 = 1 + $s4 = $s5 + $s5 = $s4 + $s4 = $s7 + $s7 = $s4 + $s4 = [$s7+0] $s3 = [$s4+4] local[8] = $t3 local[9] = $t4 @@ -169,7 +188,7 @@ func Element_Equal [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s7 call $s3 $t3 = local[8] $t4 = local[9] @@ -179,56 +198,70 @@ func Element_Equal [in 0, out 0, local 14] $t8 = local[13] $s4 = $v0 $s3 = $s4 - $s4 = [$s5+0] - $s2 = $s3 - $s3 = [$s5+24] - $s4 = [$s4+20] + $s4 = $s3 + $s3 = $s6 + $s3 = [$s6+0] + $s2 = $s4 + $s4 = $s2 + $s2 = [$s6+24] + $s1 = $s2 + $s3 = [$s3+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 - $a1 = $s2 - $a2 = $s3 - call $s4 + $a0 = $s6 + $a1 = $s4 + $a2 = $s1 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s3 = Eq($s1 0 ) - $s1 = $s3 - if0 $s1 goto :if12_else -if12_body: - $s7 = 0 - goto :if12_end -if12_else: - $s6 = $s6 - $s1 = [$s6+0] - $s3 = [$s1+8] + $s2 = $v0 + $s1 = $s2 + $s2 = Eq($s1 0 ) + $s1 = $s2 + $s2 = $s1 + $s1 = $s2 + if0 $s1 goto :if32_else +if32_body: + $s1 = 0 + $s2 = $s1 + $s5 = $s2 + goto :if32_end +if32_else: + $s2 = $s7 + $s7 = $s2 + $s2 = [$s7+0] + $s1 = [$s2+8] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - call $s3 + $a0 = $s7 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s3 = $s1 - $s1 = [$s5+0] - $s2 = $s3 - $s3 = [$s5+28] + $s2 = $v0 + $s1 = $s2 + $s2 = $s1 + $s1 = $s6 + $s1 = [$s6+0] + $s4 = $s2 + $s2 = $s4 + $s4 = [$s6+28] + $s3 = $s4 $s1 = [$s1+20] local[8] = $t3 local[9] = $t4 @@ -236,7 +269,7 @@ if12_else: local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s5 + $a0 = $s6 $a1 = $s2 $a2 = $s3 call $s1 @@ -247,27 +280,35 @@ if12_else: $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s3 = Eq($s4 0 ) + $s3 = $s4 + $s4 = Eq($s3 0 ) + $s3 = $s4 $s4 = $s3 - if0 $s4 goto :if21_else -if21_body: - $s7 = 0 - goto :if21_end -if21_else: - $s4 = [$s5+32] - if0 $s4 goto :if27_else -if27_body: - $s6 = $s6 - $s4 = [$s6+0] - $s5 = [$s4+12] + $s3 = $s4 + if0 $s3 goto :if51_else +if51_body: + $s3 = 0 + $s4 = $s3 + $s5 = $s4 + goto :if51_end +if51_else: + $s4 = [$s6+32] + $s6 = $s4 + $s4 = $s6 + if0 $s4 goto :if65_else +if65_body: + $s4 = $s7 + $s7 = $s4 + $s4 = [$s7+0] + $s6 = [$s4+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - call $s5 + $a0 = $s7 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -275,27 +316,35 @@ if27_body: $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = Eq($s4 0 ) - $s4 = $s5 - if0 $s4 goto :if28_else -if28_body: - $s7 = 0 - goto :if28_end -if28_else: + $s6 = $s4 + $s4 = Eq($s6 0 ) + $s6 = $s4 + $s4 = $s6 + $s6 = $s4 + if0 $s6 goto :if68_else +if68_body: + $s6 = 0 + $s4 = $s6 + $s5 = $s4 + goto :if68_end +if68_else: $s4 = 0 -if28_end: - goto :if27_end -if27_else: - $s6 = $s6 - $s5 = [$s6+0] - $s3 = [$s5+12] + $s6 = $s4 + $s4 = $s6 +if68_end: + goto :if65_end +if65_else: + $s6 = $s7 + $s7 = $s6 + $s6 = [$s7+0] + $s3 = [$s6+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s7 call $s3 $t3 = local[8] $t4 = local[9] @@ -303,20 +352,27 @@ if27_else: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 - if0 $s3 goto :if33_else -if33_body: - $s7 = 0 - goto :if33_end -if33_else: - $s4 = 0 -if33_end: -if27_end: -if21_end: -if12_end: - $s4 = $s7 - $v0 = $s4 + $s6 = $v0 + $s3 = $s6 + $s6 = $s3 + if0 $s6 goto :if81_else +if81_body: + $s6 = 0 + $s3 = $s6 + $s5 = $s3 + goto :if81_end +if81_else: + $s3 = 0 + $s6 = $s3 + $s4 = $s6 +if81_end: +if65_end: +if51_end: +if32_end: + $s6 = $s5 + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -339,34 +395,51 @@ func Element_Compare [in 0, out 0, local 14] $s6 = $a1 $s7 = $a2 $s4 = 0 + $s5 = $s4 + $s4 = $s5 $s5 = $s7 $s3 = 1 $s2 = Add($s5 $s3 ) $s3 = $s2 - $s2 = $s6 + $s2 = $s3 + $s3 = $s6 $s5 = $s7 - $s7 = LtS($s2 $s5 ) + $s7 = LtS($s3 $s5 ) $s5 = $s7 - if0 $s5 goto :if41_else -if41_body: - $s4 = 0 - goto :if41_end -if41_else: + $s7 = $s5 + if0 $s7 goto :if100_else +if100_body: + $s7 = 0 + $s5 = $s7 + $s4 = $s5 + goto :if100_end +if100_else: $s5 = $s6 - $s6 = $s3 - $s3 = LtS($s5 $s6 ) - $s6 = Eq($s3 0 ) - $s3 = $s6 - if0 $s3 goto :if45_else -if45_body: - $s4 = 0 - goto :if45_end -if45_else: - $s4 = 1 -if45_end: -if41_end: - $s3 = $s4 - $v0 = $s3 + $s6 = $s2 + $s2 = LtS($s5 $s6 ) + $s6 = $s2 + $s2 = $s6 + $s6 = $s2 + $s2 = Eq($s6 0 ) + $s6 = $s2 + $s2 = $s6 + $s6 = $s2 + if0 $s6 goto :if107_else +if107_body: + $s6 = 0 + $s2 = $s6 + $s4 = $s2 + goto :if107_end +if107_else: + $s2 = 1 + $s6 = $s2 + $s4 = $s6 +if107_end: +if100_end: + $s6 = $s4 + $s4 = $s6 + $s6 = $s4 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -385,10 +458,14 @@ func List_Init [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s7 = $a0 - [$s7+48] = 1 + $s6 = $a0 $s7 = 1 - $v0 = $s7 + $s5 = $s7 + [$s6+48] = $s5 + $s5 = 1 + $s6 = $s5 + $s5 = $s6 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -410,12 +487,20 @@ func List_InitNew [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = $a2 - $s4 = $a3 - [$s5+48] = $s4 + $s3 = $a3 + $s4 = $s3 + $s3 = $s4 + [$s5+48] = $s3 + $s3 = $s6 + $s6 = $s3 [$s5+40] = $s6 + $s6 = $s7 + $s7 = $s6 [$s5+44] = $s7 - $s5 = 1 - $v0 = $s5 + $s7 = 1 + $s5 = $s7 + $s7 = $s5 + $v0 = $s7 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -437,15 +522,23 @@ func List_Insert [in 0, out 0, local 14] $s6 = $a0 $s7 = $a1 $s5 = $s6 + $s6 = $s5 + $s5 = $s6 $s6 = HeapAllocZ(52 ) [$s6+0] = :functable_List $s4 = $s6 - $s4 = $s4 + $s6 = $s4 + $s4 = $s6 + $s6 = $s4 + $s4 = $s6 $s6 = [$s4+0] $s3 = [$s6+4] $s6 = $s7 - $s7 = $s5 - $s5 = 0 + $s7 = $s6 + $s6 = $s5 + $s5 = $s6 + $s6 = 0 + $s2 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -453,9 +546,9 @@ func List_Insert [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s4 - $a1 = $s6 - $a2 = $s7 - $a3 = $s5 + $a1 = $s7 + $a2 = $s5 + $a3 = $s2 call $s3 $t3 = local[8] $t4 = local[9] @@ -463,10 +556,13 @@ func List_Insert [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - $s5 = $s4 - $v0 = $s5 + $s6 = $v0 + $s2 = $s6 + $s6 = $s2 + $s6 = $s4 + $s4 = $s6 + $s6 = $s4 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -485,10 +581,14 @@ func List_SetNext [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+44] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+44] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -499,7 +599,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 57] +func List_Delete [in 0, out 0, local 97] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -510,69 +610,133 @@ func List_Delete [in 0, out 0, local 57] local[7] = $s7 $s6 = $a0 $s7 = $a1 + $s5 = $s6 + $s4 = $s5 $t0 = local[14] - $t0 = $s6 + $t0 = $s4 local[14] = $t0 $s4 = 0 + $s3 = $s4 + $s4 = $s3 $s3 = 0 $s2 = 1 $s1 = Sub($s3 $s2 ) $s2 = $s1 - $s1 = $s6 + $s1 = $s2 + $s2 = $s6 + $s3 = $s2 + $s2 = $s3 $s3 = $s6 + $s0 = $s3 + $s3 = $s0 $s0 = [$s6+48] + $t7 = $s0 + $s0 = $t7 $t7 = [$s6+40] -while65_test: - $s6 = Eq($s0 0 ) - $t0 = local[52] + $s6 = $t7 + $t7 = $s6 +while178_test: + $s6 = $s0 + $t0 = local[39] $t0 = $s6 - local[52] = $t0 - $t0 = local[50] - $t0 = Eq($s4 0 ) - local[50] = $t0 - $t0 = local[42] - $t1 = local[50] + local[39] = $t0 + $t0 = local[80] + $t1 = local[39] + $t0 = Eq($t1 0 ) + local[39] = $t1 + local[80] = $t0 + $t0 = local[30] + $t1 = local[80] $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] + local[80] = $t1 + local[30] = $t0 + $t0 = local[36] + $t1 = local[30] $t0 = $t1 - local[49] = $t1 - local[38] = $t0 + local[30] = $t1 + local[36] = $t0 + $t0 = local[35] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[35] = $t0 + $t0 = local[37] + $t0 = $s4 + local[37] = $t0 + $t0 = local[32] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[32] = $t0 $t0 = local[38] - if0 $t0 goto :while65_end + $t1 = local[32] + $t0 = Eq($t1 0 ) + local[32] = $t1 local[38] = $t0 -while65_body: - $s7 = $s7 - $t0 = local[40] + $t0 = local[31] + $t1 = local[38] + $t0 = $t1 + local[38] = $t1 + local[31] = $t0 + $t0 = local[34] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[34] = $t0 + $t0 = local[33] + $t1 = local[34] + $t0 = $t1 + local[34] = $t1 + local[33] = $t0 + $t0 = local[29] + $t1 = local[35] + $t0 = Eq(1 $t1 ) + local[35] = $t1 + local[29] = $t0 + $t0 = local[15] + $t1 = local[33] + $t0 = Eq(1 $t1 ) + local[33] = $t1 + local[15] = $t0 + $t0 = local[81] + $t1 = local[29] + $t2 = local[15] + $t0 = Eq($t1 $t2 ) + local[15] = $t2 + local[29] = $t1 + local[81] = $t0 + $t0 = local[81] + $t3 = $t0 + local[81] = $t0 + $t0 = local[25] + $t0 = $t3 + local[25] = $t0 + $t0 = local[25] + if0 $t0 goto :while178_end + local[25] = $t0 +while178_body: + $t0 = local[28] + $t0 = $s7 + local[28] = $t0 + $t0 = local[28] + $s7 = $t0 + local[28] = $t0 + $t0 = local[26] $t0 = [$s7+0] - local[40] = $t0 - $t0 = local[39] - $t1 = local[40] + local[26] = $t0 + $t0 = local[21] + $t1 = local[26] $t0 = [$t1+16] - local[40] = $t1 - local[39] = $t0 - $t0 = local[34] + local[26] = $t1 + local[21] = $t0 + $t0 = local[20] $t0 = $t7 - local[34] = $t0 + local[20] = $t0 + $t0 = local[23] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[23] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -580,151 +744,202 @@ while65_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $t0 = local[34] + $t0 = local[23] $a1 = $t0 - local[34] = $t0 - $t0 = local[39] - $t1 = local[39] + local[23] = $t0 + $t0 = local[21] + $t1 = local[21] call $t1 - local[39] = $t1 - local[39] = $t0 + local[21] = $t1 + local[21] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[37] + $t0 = local[24] $t0 = $v0 - local[37] = $t0 - $t0 = local[33] - $t1 = local[37] + local[24] = $t0 + $t0 = local[22] + $t1 = local[24] $t0 = $t1 - local[37] = $t1 - local[33] = $t0 - $t0 = local[33] - if0 $t0 goto :if74_else - local[33] = $t0 -if74_body: - $s4 = 1 - $t0 = local[35] - $t0 = $s2 - local[35] = $t0 - $t0 = local[31] + local[24] = $t1 + local[22] = $t0 + $t0 = local[50] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[50] = $t0 + $t0 = local[50] + if0 $t0 goto :if196_else + local[50] = $t0 +if196_body: + $t0 = local[52] + $t0 = 1 + local[52] = $t0 + $t0 = local[51] + $t1 = local[52] + $t0 = $t1 + local[52] = $t1 + local[51] = $t0 + $t0 = local[51] + $s4 = $t0 + local[51] = $t0 + $t0 = local[56] + $t0 = $s1 + local[56] = $t0 + $t0 = local[59] $t0 = 0 - local[31] = $t0 - $t0 = local[36] - $t1 = local[35] - $t2 = local[31] + local[59] = $t0 + $t0 = local[57] + $t1 = local[56] + $t2 = local[59] $t0 = LtS($t1 $t2 ) - local[31] = $t2 - local[35] = $t1 - local[36] = $t0 - $t0 = local[30] - $t1 = local[36] + local[59] = $t2 + local[56] = $t1 + local[57] = $t0 + $t0 = local[58] + $t1 = local[57] $t0 = $t1 - local[36] = $t1 - local[30] = $t0 - $t0 = local[30] - if0 $t0 goto :if79_else - local[30] = $t0 -if79_body: - $s1 = $s1 - $t0 = local[27] - $t0 = [$s1+0] - local[27] = $t0 - $t0 = local[26] - $t1 = local[27] + local[57] = $t1 + local[58] = $t0 + $t0 = local[54] + $t1 = local[58] + $t0 = $t1 + local[58] = $t1 + local[54] = $t0 + $t0 = local[54] + if0 $t0 goto :if206_else + local[54] = $t0 +if206_body: + $t0 = local[55] + $t0 = $s2 + local[55] = $t0 + $t0 = local[55] + $s2 = $t0 + local[55] = $t0 + $t0 = local[41] + $t0 = [$s2+0] + local[41] = $t0 + $t0 = local[40] + $t1 = local[41] $t0 = [$t1+32] - local[27] = $t1 - local[26] = $t0 + local[41] = $t1 + local[40] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s1 - $t0 = local[26] - $t1 = local[26] + $a0 = $s2 + $t0 = local[40] + $t1 = local[40] call $t1 - local[26] = $t1 - local[26] = $t0 + local[40] = $t1 + local[40] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[21] + $t0 = local[53] $t0 = $v0 - local[21] = $t0 + local[53] = $t0 + $t0 = local[43] + $t1 = local[53] + $t0 = $t1 + local[53] = $t1 + local[43] = $t0 $t0 = local[14] - $t1 = local[21] + $t1 = local[43] $t0 = $t1 - local[21] = $t1 + local[43] = $t1 local[14] = $t0 - goto :if79_end -if79_else: - $t0 = local[28] + goto :if206_end +if206_else: + $t0 = local[47] $t0 = 0 - local[28] = $t0 - $t0 = local[23] + local[47] = $t0 + $t0 = local[46] $t0 = 555 - local[23] = $t0 - $t0 = local[29] - $t1 = local[28] - $t2 = local[23] + local[46] = $t0 + $t0 = local[42] + $t1 = local[47] + $t2 = local[46] $t0 = Sub($t1 $t2 ) - local[23] = $t2 - local[28] = $t1 - local[29] = $t0 - $t0 = local[22] - $t1 = local[29] + local[46] = $t2 + local[47] = $t1 + local[42] = $t0 + $t0 = local[49] + $t1 = local[42] $t0 = $t1 - local[29] = $t1 - local[22] = $t0 - $t0 = local[22] + local[42] = $t1 + local[49] = $t0 + $t0 = local[48] + $t1 = local[49] + $t0 = $t1 + local[49] = $t1 + local[48] = $t0 + $t0 = local[48] PrintIntS($t0 ) - local[22] = $t0 - $s3 = $s3 - $t0 = local[20] + local[48] = $t0 + $t0 = local[74] + $t0 = $s3 + local[74] = $t0 + $t0 = local[74] + $s3 = $t0 + local[74] = $t0 + $t0 = local[71] $t0 = [$s3+0] - local[20] = $t0 - $t0 = local[20] - $t5 = [$t0+12] - local[20] = $t0 - $s1 = $s1 - $t0 = local[17] - $t0 = [$s1+0] - local[17] = $t0 - $t0 = local[16] - $t1 = local[17] + local[71] = $t0 + $t0 = local[70] + $t1 = local[71] + $t0 = [$t1+12] + local[71] = $t1 + local[70] = $t0 + $t0 = local[72] + $t0 = $s2 + local[72] = $t0 + $t0 = local[72] + $s2 = $t0 + local[72] = $t0 + $t0 = local[77] + $t0 = [$s2+0] + local[77] = $t0 + $t0 = local[76] + $t1 = local[77] $t0 = [$t1+32] - local[17] = $t1 - local[16] = $t0 + local[77] = $t1 + local[76] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s1 - $t0 = local[16] - $t1 = local[16] + $a0 = $s2 + $t0 = local[76] + $t1 = local[76] call $t1 - local[16] = $t1 - local[16] = $t0 + local[76] = $t1 + local[76] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $t0 = local[19] - $t0 = $t6 - local[19] = $t0 + $t0 = local[73] + $t0 = $v0 + local[73] = $t0 + $t0 = local[79] + $t1 = local[73] + $t0 = $t1 + local[73] = $t1 + local[79] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -732,164 +947,264 @@ if79_else: local[12] = $t7 local[13] = $t8 $a0 = $s3 - $t0 = local[19] + $t0 = local[79] $a1 = $t0 - local[19] = $t0 - call $t5 + local[79] = $t0 + $t0 = local[70] + $t1 = local[70] + call $t1 + local[70] = $t1 + local[70] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $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: - $s5 = 0 -if74_end: $t0 = local[44] - $t0 = Eq($s4 0 ) + $t0 = $v0 local[44] = $t0 - $t0 = local[46] + $t0 = local[78] $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 - $t0 = local[54] - $t0 = [$s1+0] - local[54] = $t0 - $t0 = local[53] - $t1 = local[54] + local[78] = $t0 + $t0 = local[45] + $t1 = local[78] + $t0 = $t1 + local[78] = $t1 + local[45] = $t0 + $t0 = local[65] + $t0 = 0 + local[65] = $t0 + $t0 = local[64] + $t0 = 555 + local[64] = $t0 + $t0 = local[75] + $t1 = local[65] + $t2 = local[64] + $t0 = Sub($t1 $t2 ) + local[64] = $t2 + local[65] = $t1 + local[75] = $t0 + $t0 = local[61] + $t1 = local[75] + $t0 = $t1 + local[75] = $t1 + local[61] = $t0 + $t0 = local[60] + $t1 = local[61] + $t0 = $t1 + local[61] = $t1 + local[60] = $t0 + $t0 = local[60] + PrintIntS($t0 ) + local[60] = $t0 +if206_end: + goto :if196_end +if196_else: + $t0 = local[62] + $t0 = 0 + local[62] = $t0 + $t0 = local[67] + $t1 = local[62] + $t0 = $t1 + local[62] = $t1 + local[67] = $t0 + $t0 = local[63] + $t1 = local[67] + $t0 = $t1 + local[67] = $t1 + local[63] = $t0 +if196_end: + $t0 = local[69] + $t0 = $s4 + local[69] = $t0 + $t0 = local[68] + $t1 = local[69] + $t0 = $t1 + local[69] = $t1 + local[68] = $t0 + $t0 = local[66] + $t1 = local[68] + $t0 = Eq($t1 0 ) + local[68] = $t1 + local[66] = $t0 + $t0 = local[88] + $t1 = local[66] + $t0 = $t1 + local[66] = $t1 + local[88] = $t0 + $t0 = local[90] + $t1 = local[88] + $t0 = $t1 + local[88] = $t1 + local[90] = $t0 + $t0 = local[89] + $t1 = local[90] + $t0 = $t1 + local[90] = $t1 + local[89] = $t0 + $t0 = local[89] + if0 $t0 goto :if238_else + local[89] = $t0 +if238_body: + $t0 = local[84] + $t0 = $s2 + local[84] = $t0 + $t0 = local[82] + $t1 = local[84] + $t0 = $t1 + local[84] = $t1 + local[82] = $t0 + $t0 = local[82] + $s3 = $t0 + local[82] = $t0 + $t0 = local[86] + $t0 = $s2 + local[86] = $t0 + $t0 = local[86] + $s2 = $t0 + local[86] = $t0 + $t0 = local[92] + $t0 = [$s2+0] + local[92] = $t0 + $t0 = local[91] + $t1 = local[92] $t0 = [$t1+32] - local[54] = $t1 - local[53] = $t0 + local[92] = $t1 + local[91] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s1 - $t0 = local[53] - $t1 = local[53] + $a0 = $s2 + $t0 = local[91] + $t1 = local[91] call $t1 - local[53] = $t1 - local[53] = $t0 + local[91] = $t1 + local[91] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[45] + $t0 = local[87] $t0 = $v0 - local[45] = $t0 - $t0 = local[45] - $s1 = $t0 - local[45] = $t0 - $s1 = $s1 - $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[87] = $t0 + $t0 = local[95] + $t1 = local[87] + $t0 = $t1 + local[87] = $t1 + local[95] = $t0 + $t0 = local[95] + $s2 = $t0 + local[95] = $t0 + $t6 = $s2 + $s2 = $t6 + $t5 = [$s2+0] + $t4 = [$t5+24] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s1 - $t0 = local[48] - $t1 = local[48] - call $t1 - local[48] = $t1 - local[48] = $t0 + $a0 = $s2 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[56] + $t0 = local[27] $t0 = $v0 - local[56] = $t0 - $t0 = local[56] - $s0 = $t0 - local[56] = $t0 - $s1 = $s1 - $t0 = local[51] - $t0 = [$s1+0] - local[51] = $t0 - $t0 = local[32] - $t1 = local[51] + local[27] = $t0 + $t0 = local[27] + $s5 = $t0 + local[27] = $t0 + $s0 = $s5 + $t0 = local[17] + $t0 = $s2 + local[17] = $t0 + $t0 = local[17] + $s2 = $t0 + local[17] = $t0 + $t0 = local[18] + $t0 = [$s2+0] + local[18] = $t0 + $t0 = local[19] + $t1 = local[18] $t0 = [$t1+28] - local[51] = $t1 - local[32] = $t0 + local[18] = $t1 + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s1 - $t0 = local[32] - $t1 = local[32] + $a0 = $s2 + $t0 = local[19] + $t1 = local[19] call $t1 - local[32] = $t1 - local[32] = $t0 + local[19] = $t1 + local[19] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[47] + $t0 = local[16] $t0 = $v0 - local[47] = $t0 - $t0 = local[47] + local[16] = $t0 + $t0 = local[96] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[96] = $t0 + $t0 = local[96] $t7 = $t0 - local[47] = $t0 - $s2 = 1 - goto :if101_end -if101_else: - $s5 = 0 -if101_end: - goto :while65_test -while65_end: + local[96] = $t0 + $t0 = local[93] + $t0 = 1 + local[93] = $t0 + $t0 = local[94] + $t1 = local[93] + $t0 = $t1 + local[93] = $t1 + local[94] = $t0 + $t0 = local[94] + $s1 = $t0 + local[94] = $t0 + goto :if238_end +if238_else: + $t0 = local[83] + $t0 = 0 + local[83] = $t0 + $t0 = local[85] + $t1 = local[83] + $t0 = $t1 + local[83] = $t1 + local[85] = $t0 + $t0 = local[63] + $t1 = local[85] + $t0 = $t1 + local[85] = $t1 + local[63] = $t0 +if238_end: + goto :while178_test +while178_end: $t0 = local[14] $s5 = $t0 local[14] = $t0 + $t3 = $s5 + $s5 = $t3 $v0 = $s5 $s0 = local[0] $s1 = local[1] @@ -900,7 +1215,7 @@ while65_end: $s6 = local[6] $s7 = local[7] ret -func List_Search [in 0, out 0, local 23] +func List_Search [in 0, out 0, local 40] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -911,28 +1226,64 @@ func List_Search [in 0, out 0, local 23] local[7] = $s7 $s6 = $a0 $s7 = $a1 + $s5 = 0 + $s4 = $s5 $t0 = local[14] - $t0 = 0 + $t0 = $s4 local[14] = $t0 $s4 = $s6 + $s3 = $s4 + $s4 = $s3 $s3 = [$s6+48] + $s2 = $s3 + $s3 = $s2 $s2 = [$s6+40] -while113_test: - $s6 = Eq($s3 0 ) - $t0 = local[22] + $s6 = $s2 + $s2 = $s6 +while276_test: + $s6 = $s3 + $t0 = local[26] $t0 = $s6 - local[22] = $t0 - $t0 = local[22] - if0 $t0 goto :while113_end - local[22] = $t0 -while113_body: - $s7 = $s7 - $t4 = [$s7+0] - $t0 = local[17] - $t0 = [$t4+16] - local[17] = $t0 + local[26] = $t0 + $t0 = local[33] + $t1 = local[26] + $t0 = Eq($t1 0 ) + local[26] = $t1 + local[33] = $t0 + $t0 = local[24] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[24] = $t0 + $t0 = local[27] + $t1 = local[24] + $t0 = $t1 + local[24] = $t1 + local[27] = $t0 + $t0 = local[19] + $t1 = local[27] + $t0 = $t1 + local[27] = $t1 + local[19] = $t0 + $t0 = local[19] + if0 $t0 goto :while276_end + local[19] = $t0 +while276_body: + $t0 = local[23] + $t0 = $s7 + local[23] = $t0 + $t0 = local[23] + $s7 = $t0 + local[23] = $t0 + $t0 = local[21] + $t0 = [$s7+0] + local[21] = $t0 + $t0 = local[21] + $t4 = [$t0+16] + local[21] = $t0 + $t6 = $s2 $t0 = local[15] - $t0 = $s2 + $t0 = $t6 local[15] = $t0 local[8] = $t3 local[9] = $t4 @@ -944,37 +1295,69 @@ while113_body: $t0 = local[15] $a1 = $t0 local[15] = $t0 - $t0 = local[17] - $t1 = local[17] - call $t1 - local[17] = $t1 - local[17] = $t0 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[21] + $t0 = local[17] $t0 = $v0 - local[21] = $t0 - $t0 = local[21] - $s0 = $t0 - local[21] = $t0 - if0 $s0 goto :if116_else -if116_body: - $t0 = local[14] + local[17] = $t0 + $t0 = local[17] + $t3 = $t0 + local[17] = $t0 + $t0 = local[39] + $t0 = $t3 + local[39] = $t0 + $t0 = local[39] + if0 $t0 goto :if283_else + local[39] = $t0 +if283_body: + $t0 = local[38] $t0 = 1 + local[38] = $t0 + $t0 = local[28] + $t1 = local[38] + $t0 = $t1 + local[38] = $t1 + local[28] = $t0 + $t0 = local[14] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 local[14] = $t0 - goto :if116_end -if116_else: - $s1 = 0 -if116_end: - $s4 = $s4 - $t7 = [$s4+0] - $t0 = local[19] - $t0 = [$t7+32] - local[19] = $t0 + goto :if283_end +if283_else: + $t0 = local[34] + $t0 = 0 + local[34] = $t0 + $t0 = local[37] + $t1 = local[34] + $t0 = $t1 + local[34] = $t1 + local[37] = $t0 + $t0 = local[35] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[35] = $t0 +if283_end: + $t0 = local[30] + $t0 = $s4 + local[30] = $t0 + $t0 = local[30] + $s4 = $t0 + local[30] = $t0 + $t0 = local[29] + $t0 = [$s4+0] + local[29] = $t0 + $t0 = local[32] + $t1 = local[29] + $t0 = [$t1+32] + local[29] = $t1 + local[32] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -982,26 +1365,34 @@ if116_end: local[12] = $t7 local[13] = $t8 $a0 = $s4 - $t0 = local[19] - $t1 = local[19] + $t0 = local[32] + $t1 = local[32] call $t1 - local[19] = $t1 - local[19] = $t0 + 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 - $s4 = $t6 - $s4 = $s4 - $t0 = local[20] - $t0 = [$s4+0] - local[20] = $t0 - $t0 = local[20] - $t3 = [$t0+24] - local[20] = $t0 + $t0 = local[36] + $t0 = $v0 + local[36] = $t0 + $t0 = local[31] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[31] = $t0 + $t0 = local[31] + $s4 = $t0 + local[31] = $t0 + $s0 = $s4 + $s4 = $s0 + $s1 = [$s4+0] + $t0 = local[18] + $t0 = [$s1+24] + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1009,26 +1400,36 @@ if116_end: local[12] = $t7 local[13] = $t8 $a0 = $s4 - call $t3 + $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[18] + $t0 = local[25] $t0 = $v0 - local[18] = $t0 - $t0 = local[18] - $s3 = $t0 - local[18] = $t0 - $s4 = $s4 + local[25] = $t0 $t0 = local[16] - $t0 = [$s4+0] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 local[16] = $t0 $t0 = local[16] - $s5 = [$t0+28] + $s3 = $t0 local[16] = $t0 + $t0 = local[20] + $t0 = $s4 + local[20] = $t0 + $t0 = local[20] + $s4 = $t0 + local[20] = $t0 + $t5 = [$s4+0] + $t7 = [$t5+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1036,20 +1437,27 @@ if116_end: local[12] = $t7 local[13] = $t8 $a0 = $s4 - call $s5 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s2 = $t5 - goto :while113_test -while113_end: + $t0 = local[22] + $t0 = $v0 + local[22] = $t0 + $t0 = local[22] + $s5 = $t0 + local[22] = $t0 + $s2 = $s5 + goto :while276_test +while276_end: $t0 = local[14] $s5 = $t0 local[14] = $t0 + $t3 = $s5 + $s5 = $t3 $v0 = $s5 $s0 = local[0] $s1 = local[1] @@ -1071,6 +1479,8 @@ func List_GetEnd [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+48] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -1092,6 +1502,8 @@ func List_GetElem [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+40] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -1113,6 +1525,8 @@ func List_GetNext [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+44] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -1123,7 +1537,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 19] +func List_Print [in 0, out 0, local 31] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1134,26 +1548,51 @@ func List_Print [in 0, out 0, local 19] local[7] = $s7 $s7 = $a0 $s6 = $s7 + $s5 = $s6 + $s6 = $s5 $s5 = [$s7+48] + $s4 = $s5 + $s5 = $s4 $s4 = [$s7+40] -while134_test: - $s7 = Eq($s5 0 ) - $t0 = local[16] + $s7 = $s4 + $s4 = $s7 +while328_test: + $s7 = $s5 + $t0 = local[20] $t0 = $s7 - local[16] = $t0 - $t0 = local[16] - if0 $t0 goto :while134_end - local[16] = $t0 -while134_body: - $s4 = $s4 + local[20] = $t0 + $t0 = local[28] + $t1 = local[20] + $t0 = Eq($t1 0 ) + local[20] = $t1 + local[28] = $t0 $t0 = local[18] - $t0 = [$s4+0] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 local[18] = $t0 - $t0 = local[17] + $t0 = local[23] $t1 = local[18] - $t0 = [$t1+4] + $t0 = $t1 local[18] = $t1 - local[17] = $t0 + local[23] = $t0 + $t0 = local[21] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[21] = $t0 + $t0 = local[21] + if0 $t0 goto :while328_end + local[21] = $t0 +while328_body: + $t3 = $s4 + $s4 = $t3 + $t0 = local[15] + $t0 = [$s4+0] + local[15] = $t0 + $t0 = local[15] + $t6 = [$t0+4] + local[15] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1161,27 +1600,25 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s4 - $t0 = local[17] - $t1 = local[17] - call $t1 - local[17] = $t1 - local[17] = $t0 + call $t6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[15] + $t0 = local[14] $t0 = $v0 - local[15] = $t0 - $t0 = local[15] + local[14] = $t0 + $t0 = local[14] $t7 = $t0 - local[15] = $t0 - PrintIntS($t7 ) - $s6 = $s6 - $t6 = [$s6+0] - $s2 = [$t6+32] + local[14] = $t0 + $t4 = $t7 + PrintIntS($t4 ) + $s2 = $s6 + $s6 = $s2 + $s3 = [$s6+0] + $s0 = [$s3+32] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1189,7 +1626,7 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s2 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1197,10 +1634,22 @@ while134_body: $t7 = local[12] $t8 = local[13] $t5 = $v0 - $s6 = $t5 - $s6 = $s6 - $s0 = [$s6+0] - $s1 = [$s0+24] + $s1 = $t5 + $s6 = $s1 + $t0 = local[29] + $t0 = $s6 + local[29] = $t0 + $t0 = local[29] + $s6 = $t0 + local[29] = $t0 + $t0 = local[16] + $t0 = [$s6+0] + local[16] = $t0 + $t0 = local[25] + $t1 = local[16] + $t0 = [$t1+24] + local[16] = $t1 + local[25] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1208,20 +1657,42 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - call $s1 + $t0 = local[25] + $t1 = local[25] + call $t1 + local[25] = $t1 + local[25] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 - $s6 = $s6 - $t4 = [$s6+0] - $t0 = local[14] - $t0 = [$t4+28] - local[14] = $t0 + $t0 = local[30] + $t0 = $v0 + local[30] = $t0 + $t0 = local[24] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[24] = $t0 + $t0 = local[24] + $s5 = $t0 + local[24] = $t0 + $t0 = local[26] + $t0 = $s6 + local[26] = $t0 + $t0 = local[26] + $s6 = $t0 + local[26] = $t0 + $t0 = local[19] + $t0 = [$s6+0] + local[19] = $t0 + $t0 = local[17] + $t1 = local[19] + $t0 = [$t1+28] + local[19] = $t1 + local[17] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1229,22 +1700,33 @@ while134_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $t0 = local[14] - $t1 = local[14] + $t0 = local[17] + $t1 = local[17] call $t1 - local[14] = $t1 - local[14] = $t0 + local[17] = $t1 + local[17] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t3 = $v0 - $s4 = $t3 - goto :while134_test -while134_end: + $t0 = local[27] + $t0 = $v0 + local[27] = $t0 + $t0 = local[22] + $t1 = local[27] + $t0 = $t1 + local[27] = $t1 + local[22] = $t0 + $t0 = local[22] + $s4 = $t0 + local[22] = $t0 + goto :while328_test +while328_end: $t3 = 1 + $t4 = $t3 + $t3 = $t4 $v0 = $t3 $s0 = local[0] $s1 = local[1] @@ -1268,7 +1750,10 @@ func LL_Start [in 0, out 0, local 14] $s6 = HeapAllocZ(52 ) [$s6+0] = :functable_List $s7 = $s6 - $s7 = $s7 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 $s6 = [$s7+0] $s5 = [$s6+0] local[8] = $t3 @@ -1287,9 +1772,13 @@ func LL_Start [in 0, out 0, local 14] $t8 = local[13] $s6 = $v0 $s5 = $s6 - $s6 = $s7 - $s6 = $s6 - $s7 = [$s6+0] + $s6 = $s5 + $s5 = $s7 + $s7 = $s5 + $s5 = $s7 + $s7 = $s5 + $s5 = $s7 + $s7 = [$s5+0] $s4 = [$s7+0] local[8] = $t3 local[9] = $t4 @@ -1297,7 +1786,7 @@ func LL_Start [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s5 call $s4 $t3 = local[8] $t4 = local[9] @@ -1306,35 +1795,44 @@ func LL_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s7 = $v0 - $s5 = $s7 - $s6 = $s6 - $s7 = [$s6+0] - $s4 = [$s7+36] + $s4 = $s7 + $s6 = $s4 + $s4 = $s5 + $s5 = $s4 + $s4 = [$s5+0] + $s7 = [$s4+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - call $s4 + $a0 = $s5 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s5 = $s7 + $s4 = $v0 + $s7 = $s4 + $s6 = $s7 $s7 = HeapAllocZ(36 ) [$s7+0] = :functable_Element $s4 = $s7 - $s4 = $s4 + $s7 = $s4 + $s4 = $s7 + $s7 = $s4 + $s4 = $s7 $s7 = [$s4+0] $s3 = [$s7+0] $s7 = 25 - $s2 = 37000 - $s1 = 0 + $s2 = $s7 + $s7 = 37000 + $s1 = $s7 + $s7 = 0 + $s0 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1342,9 +1840,9 @@ func LL_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s4 - $a1 = $s7 - $a2 = $s2 - $a3 = $s1 + $a1 = $s2 + $a2 = $s1 + $a3 = $s0 call $s3 $t3 = local[8] $t4 = local[9] @@ -1352,39 +1850,44 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 + $s7 = $v0 + $s0 = $s7 + $s6 = $s0 + $s0 = $s5 $s5 = $s0 - $s6 = $s6 - $s0 = [$s6+0] - $s1 = [$s0+8] + $s0 = [$s5+0] + $s7 = [$s0+8] $s0 = $s4 + $s1 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s0 - call $s1 + $a0 = $s5 + $a1 = $s1 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s6 = $s2 - $s6 = $s6 - $s2 = [$s6+0] - $s0 = [$s2+36] + $s0 = $v0 + $s1 = $s0 + $s5 = $s1 + $s1 = $s5 + $s5 = $s1 + $s1 = [$s5+0] + $s0 = [$s1+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s5 call $s0 $t3 = local[8] $t4 = local[9] @@ -1392,19 +1895,28 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $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 + $s1 = $v0 + $s0 = $s1 + $s6 = $s0 + $s0 = 10000000 + $s1 = $s0 + $s0 = $s1 + PrintIntS($s0 ) + $s0 = HeapAllocZ(36 ) + [$s0+0] = :functable_Element + $s1 = $s0 + $s0 = $s1 + $s4 = $s0 + $s0 = $s4 + $s4 = $s0 + $s0 = [$s4+0] + $s1 = [$s0+0] + $s0 = 39 + $s7 = $s0 + $s0 = 42000 + $s2 = $s0 + $s0 = 1 + $s3 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1412,70 +1924,86 @@ func LL_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s4 - $a1 = $s2 - $a2 = $s1 - $a3 = $s7 - call $s0 + $a1 = $s7 + $a2 = $s2 + $a3 = $s3 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s5 = $s3 + $s0 = $v0 + $s3 = $s0 + $s6 = $s3 $s3 = $s4 - $s6 = $s6 - $s7 = [$s6+0] - $s1 = [$s7+8] - $s7 = $s4 + $s0 = $s3 + $s3 = $s0 + $s0 = $s5 + $s5 = $s0 + $s0 = [$s5+0] + $s2 = [$s0+8] + $s0 = $s4 + $s7 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s5 $a1 = $s7 - call $s1 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s6 = $s2 - $s6 = $s6 - $s2 = [$s6+0] - $s7 = [$s2+36] + $s0 = $v0 + $s7 = $s0 + $s5 = $s7 + $s7 = $s5 + $s5 = $s7 + $s7 = [$s5+0] + $s0 = [$s7+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - call $s7 + $a0 = $s5 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $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 + $s7 = $v0 + $s0 = $s7 + $s6 = $s0 + $s0 = 10000000 + $s7 = $s0 + $s0 = $s7 + PrintIntS($s0 ) + $s0 = HeapAllocZ(36 ) + [$s0+0] = :functable_Element + $s7 = $s0 + $s0 = $s7 + $s4 = $s0 + $s0 = $s4 + $s4 = $s0 + $s0 = [$s4+0] + $s7 = [$s0+0] + $s0 = 22 + $s2 = $s0 + $s0 = 34000 + $s1 = $s0 $s0 = 0 + $t7 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1485,7 +2013,7 @@ func LL_Start [in 0, out 0, local 14] $a0 = $s4 $a1 = $s2 $a2 = $s1 - $a3 = $s0 + $a3 = $t7 call $s7 $t3 = local[8] $t4 = local[9] @@ -1493,20 +2021,23 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 + $s0 = $v0 + $t7 = $s0 + $s6 = $t7 + $t7 = $s5 $s5 = $t7 - $s6 = $s6 - $t7 = [$s6+0] + $t7 = [$s5+0] $s0 = [$t7+8] $t7 = $s4 + $s1 = $t7 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $t7 + $a0 = $s5 + $a1 = $s1 call $s0 $t3 = local[8] $t4 = local[9] @@ -1514,10 +2045,12 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s6 = $s1 - $s6 = $s6 - $s1 = [$s6+0] + $t7 = $v0 + $s1 = $t7 + $s5 = $s1 + $s1 = $s5 + $s5 = $s1 + $s1 = [$s5+0] $t7 = [$s1+36] local[8] = $t3 local[9] = $t4 @@ -1525,7 +2058,7 @@ func LL_Start [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s5 call $t7 $t3 = local[8] $t4 = local[9] @@ -1534,26 +2067,33 @@ func LL_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $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 + $s6 = $t7 + $t7 = HeapAllocZ(36 ) + [$t7+0] = :functable_Element + $s1 = $t7 + $t7 = $s1 + $s1 = $t7 + $t7 = $s1 + $s1 = $t7 + $t7 = [$s1+0] + $s0 = [$t7+0] + $t7 = 27 + $s2 = $t7 + $t7 = 34000 + $s7 = $t7 + $t7 = 0 + $t6 = $t7 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $t7 - $a1 = $s1 - $a2 = $s2 - $a3 = $s7 + $a0 = $s1 + $a1 = $s2 + $a2 = $s7 + $a3 = $t6 call $s0 $t3 = local[8] $t4 = local[9] @@ -1561,63 +2101,78 @@ func LL_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 + $t7 = $v0 + $t6 = $t7 + $s6 = $t6 + $t6 = $s5 $s5 = $t6 - $s6 = $s6 - $t6 = [$s6+0] - $s7 = [$t6+20] + $t6 = [$s5+0] + $t7 = [$t6+20] $t6 = $s3 + $s7 = $t6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $t6 - call $s7 + $a0 = $s5 + $a1 = $s7 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $t6 = $s2 + $t6 = $v0 + $s7 = $t6 + $t6 = $s7 PrintIntS($t6 ) - $s6 = $s6 - $t6 = [$s6+0] - $s2 = [$t6+20] - $t6 = $t7 + $t6 = $s5 + $s5 = $t6 + $t6 = [$s5+0] + $s7 = [$t6+20] + $t6 = $s1 + $s1 = $t6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $t6 - call $s2 + $a0 = $s5 + $a1 = $s1 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 - $t6 = $t7 + $t6 = $v0 + $s1 = $t6 + $t6 = $s1 PrintIntS($t6 ) $t6 = 10000000 + $s1 = $t6 + $t6 = $s1 PrintIntS($t6 ) $t6 = HeapAllocZ(36 ) [$t6+0] = :functable_Element + $s1 = $t6 + $t6 = $s1 + $s4 = $t6 + $t6 = $s4 $s4 = $t6 - $s4 = $s4 $t6 = [$s4+0] - $t7 = [$t6+0] + $s1 = [$t6+0] $t6 = 28 - $s2 = 35000 - $s7 = 0 + $s7 = $t6 + $t6 = 35000 + $t7 = $t6 + $t6 = 0 + $s2 = $t6 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1625,31 +2180,34 @@ func LL_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s4 - $a1 = $t6 - $a2 = $s2 - $a3 = $s7 - call $t7 + $a1 = $s7 + $a2 = $t7 + $a3 = $s2 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s5 = $s1 - $s6 = $s6 - $s1 = [$s6+0] - $s7 = [$s1+8] - $s1 = $s4 + $t6 = $v0 + $s2 = $t6 + $s6 = $s2 + $s2 = $s5 + $s5 = $s2 + $s2 = [$s5+0] + $t6 = [$s2+8] + $s2 = $s4 + $t7 = $s2 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s1 - call $s7 + $a0 = $s5 + $a1 = $t7 + call $t6 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1657,51 +2215,60 @@ func LL_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s2 = $v0 - $s6 = $s2 - $s6 = $s6 - $s2 = [$s6+0] - $s1 = [$s2+36] + $t7 = $s2 + $s5 = $t7 + $t7 = $s5 + $s5 = $t7 + $t7 = [$s5+0] + $s2 = [$t7+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - call $s1 + $a0 = $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 + $t7 = $v0 + $s2 = $t7 + $s6 = $s2 $s2 = 2220000 + $t7 = $s2 + $s2 = $t7 PrintIntS($s2 ) - $s6 = $s6 - $s2 = [$s6+0] - $s1 = [$s2+16] + $s2 = $s5 + $s5 = $s2 + $s2 = [$s5+0] + $t7 = [$s2+16] $s2 = $s3 + $s3 = $s2 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s2 - call $s1 + $a0 = $s5 + $a1 = $s3 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s6 = $s3 - $s6 = $s6 - $s3 = [$s6+0] + $s2 = $v0 + $s3 = $s2 + $s5 = $s3 + $s3 = $s5 + $s5 = $s3 + $s3 = [$s5+0] $s2 = [$s3+36] local[8] = $t3 local[9] = $t4 @@ -1709,7 +2276,7 @@ func LL_Start [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s5 call $s2 $t3 = local[8] $t4 = local[9] @@ -1718,41 +2285,48 @@ func LL_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s3 = $v0 - $s5 = $s3 - $s3 = 33300000 - PrintIntS($s3 ) - $s6 = $s6 - $s3 = [$s6+0] - $s2 = [$s3+16] - $s3 = $s4 + $s2 = $s3 + $s6 = $s2 + $s2 = 33300000 + $s3 = $s2 + $s2 = $s3 + PrintIntS($s2 ) + $s2 = $s5 + $s5 = $s2 + $s2 = [$s5+0] + $s3 = [$s2+16] + $s2 = $s4 + $s4 = $s2 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s3 - call $s2 + $a0 = $s5 + $a1 = $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s6 = $s4 - $s6 = $s6 - $s4 = [$s6+0] - $s3 = [$s4+36] + $s2 = $v0 + $s4 = $s2 + $s5 = $s4 + $s4 = $s5 + $s5 = $s4 + $s4 = [$s5+0] + $s2 = [$s4+36] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - call $s3 + $a0 = $s5 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1760,11 +2334,16 @@ func LL_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s5 = $s4 - $s4 = 44440000 - PrintIntS($s4 ) - $s4 = 0 - $v0 = $s4 + $s2 = $s4 + $s6 = $s2 + $s2 = 44440000 + $s6 = $s2 + $s2 = $s6 + PrintIntS($s2 ) + $s2 = 0 + $s6 = $s2 + $s2 = $s6 + $v0 = $s2 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/MoreThan4.s b/output/MoreThan4.s new file mode 100644 index 0000000..7fe496f --- /dev/null +++ b/output/MoreThan4.s @@ -0,0 +1,306 @@ +.data +functable_MT4: + MT4_Start + MT4_Change +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 76 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_MT4 + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 1 + move $s4 $s6 + li $s6 2 + move $s3 $s6 + li $s6 3 + move $s2 $s6 + li $s6 4 + move $s1 $s6 + li $s6 5 + move $s0 $s6 + li $s6 6 + move $t7 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + move $a2 $s3 + move $a3 $s2 + sw $s1 -76($fp) + sw $s0 -72($fp) + sw $t7 -68($fp) + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $t7 $s6 + move $s6 $t7 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 76 + jr $ra +MT4_Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 76 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s3 $a3 + lw $s4 0($fp) + lw $s1 4($fp) + lw $s2 8($fp) + move $s0 $s6 + move $t7 $s0 + move $s0 $t7 + move $a0 $s0 + jal _print + move $s0 $s7 + move $t7 $s0 + move $s0 $t7 + move $a0 $s0 + jal _print + move $s0 $s3 + move $t7 $s0 + move $s0 $t7 + move $a0 $s0 + jal _print + move $s0 $s4 + move $t7 $s0 + move $s0 $t7 + move $a0 $s0 + jal _print + move $s0 $s1 + move $t7 $s0 + move $s0 $t7 + move $a0 $s0 + jal _print + move $s0 $s2 + move $t7 $s0 + move $s0 $t7 + move $a0 $s0 + jal _print + move $s0 $s5 + lw $s0 0($s5) + move $t7 $s2 + move $s2 $t7 + move $t7 $s1 + move $s1 $t7 + move $t7 $s4 + move $s4 $t7 + move $t7 $s3 + move $s3 $t7 + move $t7 $s7 + move $s7 $t7 + move $t7 $s6 + move $s6 $t7 + lw $s0 0($s0) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s2 + move $a2 $s1 + move $a3 $s4 + sw $s3 -76($fp) + sw $s7 -72($fp) + sw $s6 -68($fp) + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t7 $v0 + move $s6 $t7 + move $t7 $s6 + move $s6 $t7 + move $t7 $s6 + move $s6 $t7 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 76 + jr $ra +MT4_Change: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s3 $a3 + lw $s4 0($fp) + lw $s1 4($fp) + lw $s2 8($fp) + move $s0 $s6 + move $s5 $s0 + move $s0 $s5 + move $a0 $s0 + jal _print + move $s0 $s7 + move $s7 $s0 + move $s0 $s7 + move $a0 $s0 + jal _print + move $s0 $s3 + move $s3 $s0 + move $s0 $s3 + move $a0 $s0 + jal _print + move $s0 $s4 + move $s4 $s0 + move $s0 $s4 + move $a0 $s0 + jal _print + move $s0 $s1 + move $s1 $s0 + move $s0 $s1 + move $a0 $s0 + jal _print + move $s0 $s2 + move $s2 $s0 + move $s0 $s2 + move $a0 $s0 + jal _print + li $s0 0 + move $s2 $s0 + move $s0 $s2 + move $v0 $s0 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/MoreThan4.vaporm b/output/MoreThan4.vaporm index 7ce53e2..611fb31 100644 --- a/output/MoreThan4.vaporm +++ b/output/MoreThan4.vaporm @@ -13,27 +13,34 @@ func Main [in 0, out 3, local 14] $s7 = HeapAllocZ(8 ) [$s7+0] = :functable_MT4 $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] - $s7 = 1 - $s4 = 2 - $s3 = 3 - $s2 = 4 - $s1 = 5 - $s0 = 6 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + $s6 = 1 + $s4 = $s6 + $s6 = 2 + $s3 = $s6 + $s6 = 3 + $s2 = $s6 + $s6 = 4 + $s1 = $s6 + $s6 = 5 + $s0 = $s6 + $s6 = 6 + $t7 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 - $a2 = $s4 - $a3 = $s3 - out[0] = $s2 - out[1] = $s1 - out[2] = $s0 + $a0 = $s7 + $a1 = $s4 + $a2 = $s3 + $a3 = $s2 + out[0] = $s1 + out[1] = $s0 + out[2] = $t7 call $s5 $t3 = local[8] $t4 = local[9] @@ -41,9 +48,10 @@ func Main [in 0, out 3, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 - $s0 = $t7 - PrintIntS($s0 ) + $s6 = $v0 + $t7 = $s6 + $s6 = $t7 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -70,24 +78,43 @@ func MT4_Start [in 3, out 3, local 14] $s1 = in[1] $s2 = in[2] $s0 = $s6 + $t7 = $s0 + $s0 = $t7 PrintIntS($s0 ) $s0 = $s7 + $t7 = $s0 + $s0 = $t7 PrintIntS($s0 ) $s0 = $s3 + $t7 = $s0 + $s0 = $t7 PrintIntS($s0 ) $s0 = $s4 + $t7 = $s0 + $s0 = $t7 PrintIntS($s0 ) $s0 = $s1 + $t7 = $s0 + $s0 = $t7 PrintIntS($s0 ) $s0 = $s2 + $t7 = $s0 + $s0 = $t7 PrintIntS($s0 ) + $s0 = $s5 $s0 = [$s5+0] $t7 = $s2 - $s2 = $s1 - $s1 = $s4 - $s4 = $s3 - $s3 = $s7 - $s7 = $s6 + $s2 = $t7 + $t7 = $s1 + $s1 = $t7 + $t7 = $s4 + $s4 = $t7 + $t7 = $s3 + $s3 = $t7 + $t7 = $s7 + $s7 = $t7 + $t7 = $s6 + $s6 = $t7 $s0 = [$s0+4] local[8] = $t3 local[9] = $t4 @@ -96,12 +123,12 @@ func MT4_Start [in 3, out 3, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $t7 - $a2 = $s2 - $a3 = $s1 - out[0] = $s4 - out[1] = $s3 - out[2] = $s7 + $a1 = $s2 + $a2 = $s1 + $a3 = $s4 + out[0] = $s3 + out[1] = $s7 + out[2] = $s6 call $s0 $t3 = local[8] $t4 = local[9] @@ -109,9 +136,12 @@ func MT4_Start [in 3, out 3, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s7 = $s6 - $s6 = $s7 + $t7 = $v0 + $s6 = $t7 + $t7 = $s6 + $s6 = $t7 + $t7 = $s6 + $s6 = $t7 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -139,18 +169,32 @@ func MT4_Change [in 3, out 0, local 14] $s1 = in[1] $s2 = in[2] $s0 = $s6 + $s5 = $s0 + $s0 = $s5 PrintIntS($s0 ) $s0 = $s7 + $s7 = $s0 + $s0 = $s7 PrintIntS($s0 ) $s0 = $s3 + $s3 = $s0 + $s0 = $s3 PrintIntS($s0 ) $s0 = $s4 + $s4 = $s0 + $s0 = $s4 PrintIntS($s0 ) $s0 = $s1 + $s1 = $s0 + $s0 = $s1 PrintIntS($s0 ) $s0 = $s2 + $s2 = $s0 + $s0 = $s2 PrintIntS($s0 ) $s0 = 0 + $s2 = $s0 + $s0 = $s2 $v0 = $s0 $s0 = local[0] $s1 = local[1] diff --git a/output/QuickSort.s b/output/QuickSort.s new file mode 100644 index 0000000..8e0e216 --- /dev/null +++ b/output/QuickSort.s @@ -0,0 +1,1420 @@ +.data +functable_QS: + QS_Start + QS_Sort + QS_Print + QS_Init +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 24 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_QS + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 10 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +QS_Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + lw $s5 0($s6) + move $s4 $s7 + move $s7 $s4 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s7 $s4 + move $s4 $s7 + move $s7 $s6 + lw $s7 0($s6) + lw $s7 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s7 $s5 + move $s4 $s7 + li $s7 9999 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + lw $s7 0($s6) + li $s5 1 + move $a0 $s7 + move $t9 $s5 + sub $s3 $a0 $t9 + move $s5 $s3 + move $s4 $s5 + move $s5 $s6 + lw $s5 0($s6) + li $s3 0 + move $s7 $s3 + move $s3 $s4 + move $s2 $s3 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + move $a2 $s2 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s4 $s2 + move $s2 $s6 + lw $s2 0($s6) + lw $s2 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s4 $s2 + li $s2 0 + move $s4 $s2 + move $s2 $s4 + move $v0 $s2 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +QS_Sort: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 384 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + sw $a0 -68($fp) + sw $a1 -80($fp) + sw $a2 -72($fp) + li $s4 0 + move $s3 $s4 + lw $t0 -84($fp) + move $t0 $s3 + sw $t0 -84($fp) + lw $t0 -80($fp) + move $s3 $t0 + sw $t0 -80($fp) + lw $t0 -72($fp) + move $s2 $t0 + sw $t0 -72($fp) + move $a0 $s3 + move $t9 $s2 + slt $s1 $a0 $t9 + move $s2 $s1 + move $s1 $s2 + beqz $s1 if43_else +if43_body: + lw $t0 -68($fp) + lw $s1 0($t0) + sw $t0 -68($fp) + move $s2 $s1 + lw $t0 -72($fp) + move $s1 $t0 + sw $t0 -72($fp) + move $a0 $s1 + li $t9 4 + mul $s3 $a0 $t9 + move $a0 $s3 + li $t9 4 + add $s3 $a0 $t9 + move $a0 $s2 + move $t9 $s3 + add $s3 $a0 $t9 + lw $s2 0($s3) + move $s3 $s2 + lw $t0 -292($fp) + move $t0 $s3 + sw $t0 -292($fp) + lw $t0 -80($fp) + move $s3 $t0 + sw $t0 -80($fp) + li $s1 1 + move $a0 $s3 + move $t9 $s1 + sub $s0 $a0 $t9 + move $s1 $s0 + lw $t0 -76($fp) + move $t0 $s1 + sw $t0 -76($fp) + lw $t0 -72($fp) + move $s1 $t0 + sw $t0 -72($fp) + move $s3 $s1 + lw $t0 -88($fp) + move $t0 $s3 + sw $t0 -88($fp) + li $s3 1 + move $t7 $s3 + lw $t0 -288($fp) + move $t0 $t7 + sw $t0 -288($fp) +while62_test: + lw $t0 -284($fp) + lw $t1 -288($fp) + move $t0 $t1 + sw $t1 -288($fp) + sw $t0 -284($fp) + lw $t0 -116($fp) + lw $t1 -284($fp) + move $t0 $t1 + sw $t1 -284($fp) + sw $t0 -116($fp) + lw $t0 -244($fp) + lw $t1 -116($fp) + move $t0 $t1 + sw $t1 -116($fp) + sw $t0 -244($fp) + lw $t0 -244($fp) + beqz $t0 while62_end + sw $t0 -244($fp) +while62_body: + lw $t0 -100($fp) + li $t0 1 + sw $t0 -100($fp) + lw $t0 -112($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -112($fp) + lw $t0 -104($fp) + lw $t1 -112($fp) + move $t0 $t1 + sw $t1 -112($fp) + sw $t0 -104($fp) +while68_test: + lw $t0 -108($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -108($fp) + lw $t0 -96($fp) + lw $t1 -108($fp) + move $t0 $t1 + sw $t1 -108($fp) + sw $t0 -96($fp) + lw $t0 -92($fp) + lw $t1 -96($fp) + move $t0 $t1 + sw $t1 -96($fp) + sw $t0 -92($fp) + lw $t0 -92($fp) + beqz $t0 while68_end + sw $t0 -92($fp) +while68_body: + lw $t0 -76($fp) + move $s3 $t0 + sw $t0 -76($fp) + li $t7 1 + move $a0 $s3 + move $t9 $t7 + add $s2 $a0 $t9 + move $s4 $s2 + lw $t0 -76($fp) + move $t0 $s4 + sw $t0 -76($fp) + lw $t0 -68($fp) + lw $t6 0($t0) + sw $t0 -68($fp) + move $t3 $t6 + lw $t0 -76($fp) + move $s0 $t0 + sw $t0 -76($fp) + move $a0 $s0 + li $t9 4 + mul $t5 $a0 $t9 + move $a0 $t5 + li $t9 4 + add $t5 $a0 $t9 + move $a0 $t3 + move $t9 $t5 + add $t5 $a0 $t9 + lw $t4 0($t5) + move $s6 $t4 + lw $t0 -296($fp) + move $t0 $s6 + sw $t0 -296($fp) + lw $t0 -304($fp) + lw $t1 -296($fp) + move $t0 $t1 + sw $t1 -296($fp) + sw $t0 -304($fp) + lw $t0 -312($fp) + lw $t1 -292($fp) + move $t0 $t1 + sw $t1 -292($fp) + sw $t0 -312($fp) + lw $t0 -304($fp) + lw $t1 -312($fp) + move $a0 $t0 + move $t9 $t1 + slt $s7 $a0 $t9 + sw $t1 -312($fp) + sw $t0 -304($fp) + lw $t0 -308($fp) + move $t0 $s7 + sw $t0 -308($fp) + lw $t0 -332($fp) + lw $t1 -308($fp) + move $t0 $t1 + sw $t1 -308($fp) + sw $t0 -332($fp) + lw $t0 -328($fp) + lw $t1 -332($fp) + move $t0 $t1 + sw $t1 -332($fp) + sw $t0 -328($fp) + lw $t0 -328($fp) + move $a0 $t0 + li $t9 0 +NULL $s5 $a0 $t9 + sw $t0 -328($fp) + lw $t0 -340($fp) + move $t0 $s5 + sw $t0 -340($fp) + lw $t0 -336($fp) + lw $t1 -340($fp) + move $t0 $t1 + sw $t1 -340($fp) + sw $t0 -336($fp) + lw $t0 -320($fp) + lw $t1 -336($fp) + move $t0 $t1 + sw $t1 -336($fp) + sw $t0 -320($fp) + lw $t0 -320($fp) + beqz $t0 if82_else + sw $t0 -320($fp) +if82_body: + lw $t0 -316($fp) + li $t0 0 + sw $t0 -316($fp) + lw $t0 -324($fp) + lw $t1 -316($fp) + move $t0 $t1 + sw $t1 -316($fp) + sw $t0 -324($fp) + lw $t0 -104($fp) + lw $t1 -324($fp) + move $t0 $t1 + sw $t1 -324($fp) + sw $t0 -104($fp) + j if82_end +if82_else: + lw $t0 -300($fp) + li $t0 1 + sw $t0 -300($fp) + lw $t0 -300($fp) + move $s1 $t0 + sw $t0 -300($fp) + lw $t0 -104($fp) + move $t0 $s1 + sw $t0 -104($fp) +if82_end: + j while68_test +while68_end: + lw $t0 -136($fp) + li $t0 1 + sw $t0 -136($fp) + lw $t0 -128($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -128($fp) + lw $t0 -104($fp) + lw $t1 -128($fp) + move $t0 $t1 + sw $t1 -128($fp) + sw $t0 -104($fp) +while98_test: + lw $t0 -148($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -148($fp) + lw $t0 -140($fp) + lw $t1 -148($fp) + move $t0 $t1 + sw $t1 -148($fp) + sw $t0 -140($fp) + lw $t0 -160($fp) + lw $t1 -140($fp) + move $t0 $t1 + sw $t1 -140($fp) + sw $t0 -160($fp) + lw $t0 -160($fp) + beqz $t0 while98_end + sw $t0 -160($fp) +while98_body: + lw $t0 -376($fp) + lw $t1 -88($fp) + move $t0 $t1 + sw $t1 -88($fp) + sw $t0 -376($fp) + lw $t0 -372($fp) + li $t0 1 + sw $t0 -372($fp) + lw $t0 -380($fp) + lw $t1 -376($fp) + lw $t2 -372($fp) + move $a0 $t1 + move $t9 $t2 + sub $t0 $a0 $t9 + sw $t2 -372($fp) + sw $t1 -376($fp) + sw $t0 -380($fp) + lw $t0 -348($fp) + lw $t1 -380($fp) + move $t0 $t1 + sw $t1 -380($fp) + sw $t0 -348($fp) + lw $t0 -88($fp) + lw $t1 -348($fp) + move $t0 $t1 + sw $t1 -348($fp) + sw $t0 -88($fp) + lw $t0 -344($fp) + lw $t1 -68($fp) + lw $t0 0($t1) + sw $t1 -68($fp) + sw $t0 -344($fp) + lw $t0 -344($fp) + move $s0 $t0 + sw $t0 -344($fp) + lw $t0 -360($fp) + lw $t1 -88($fp) + move $t0 $t1 + sw $t1 -88($fp) + sw $t0 -360($fp) + lw $t0 -360($fp) + move $a0 $t0 + li $t9 4 + mul $s4 $a0 $t9 + sw $t0 -360($fp) + move $a0 $s4 + li $t9 4 + add $s4 $a0 $t9 + move $a0 $s0 + move $t9 $s4 + add $s4 $a0 $t9 + lw $s6 0($s4) + lw $t0 -356($fp) + move $t0 $s6 + sw $t0 -356($fp) + lw $t0 -296($fp) + lw $t1 -356($fp) + move $t0 $t1 + sw $t1 -356($fp) + sw $t0 -296($fp) + lw $t0 -352($fp) + lw $t1 -292($fp) + move $t0 $t1 + sw $t1 -292($fp) + sw $t0 -352($fp) + lw $t0 -296($fp) + move $t5 $t0 + sw $t0 -296($fp) + lw $t0 -364($fp) + lw $t1 -352($fp) + move $a0 $t1 + move $t9 $t5 + slt $t0 $a0 $t9 + sw $t1 -352($fp) + sw $t0 -364($fp) + lw $t0 -364($fp) + move $t6 $t0 + sw $t0 -364($fp) + move $s2 $t6 + move $s1 $s2 + lw $t0 -368($fp) + move $a0 $s1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t0 -368($fp) + lw $t0 -368($fp) + move $t7 $t0 + sw $t0 -368($fp) + move $s3 $t7 + move $t3 $s3 + beqz $t3 if112_else +if112_body: + li $t4 0 + move $s7 $t4 + lw $t0 -104($fp) + move $t0 $s7 + sw $t0 -104($fp) + j if112_end +if112_else: + li $s5 1 + lw $t0 -384($fp) + move $t0 $s5 + sw $t0 -384($fp) + lw $t0 -104($fp) + lw $t1 -384($fp) + move $t0 $t1 + sw $t1 -384($fp) + sw $t0 -104($fp) +if112_end: + j while98_test +while98_end: + lw $t0 -176($fp) + lw $t1 -68($fp) + lw $t0 0($t1) + sw $t1 -68($fp) + sw $t0 -176($fp) + lw $t0 -208($fp) + lw $t1 -176($fp) + move $t0 $t1 + sw $t1 -176($fp) + sw $t0 -208($fp) + lw $t0 -192($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -192($fp) + lw $t0 -168($fp) + lw $t1 -192($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -192($fp) + sw $t0 -168($fp) + lw $t0 -168($fp) + lw $t1 -168($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -168($fp) + sw $t0 -168($fp) + lw $t0 -168($fp) + lw $t1 -208($fp) + lw $t2 -168($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -168($fp) + sw $t1 -208($fp) + sw $t0 -168($fp) + lw $t0 -216($fp) + lw $t1 -168($fp) + lw $t0 0($t1) + sw $t1 -168($fp) + sw $t0 -216($fp) + lw $t0 -184($fp) + lw $t1 -216($fp) + move $t0 $t1 + sw $t1 -216($fp) + sw $t0 -184($fp) + lw $t0 -84($fp) + lw $t1 -184($fp) + move $t0 $t1 + sw $t1 -184($fp) + sw $t0 -84($fp) + lw $t0 -224($fp) + lw $t1 -68($fp) + lw $t0 0($t1) + sw $t1 -68($fp) + sw $t0 -224($fp) + lw $t0 -236($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -236($fp) + lw $t0 -248($fp) + lw $t1 -236($fp) + move $t0 $t1 + sw $t1 -236($fp) + sw $t0 -248($fp) + lw $t0 -220($fp) + lw $t1 -248($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -248($fp) + sw $t0 -220($fp) + lw $t0 -220($fp) + lw $t1 -220($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -220($fp) + sw $t0 -220($fp) + lw $t0 -220($fp) + lw $t1 -224($fp) + lw $t2 -220($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -220($fp) + sw $t1 -224($fp) + sw $t0 -220($fp) + lw $t0 -272($fp) + lw $t1 -68($fp) + lw $t0 0($t1) + sw $t1 -68($fp) + sw $t0 -272($fp) + lw $t0 -276($fp) + lw $t1 -272($fp) + move $t0 $t1 + sw $t1 -272($fp) + sw $t0 -276($fp) + lw $t0 -264($fp) + lw $t1 -88($fp) + move $t0 $t1 + sw $t1 -88($fp) + sw $t0 -264($fp) + lw $t0 -268($fp) + lw $t1 -264($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -264($fp) + sw $t0 -268($fp) + lw $t0 -268($fp) + lw $t1 -268($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -268($fp) + sw $t0 -268($fp) + lw $t0 -268($fp) + lw $t1 -276($fp) + lw $t2 -268($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -268($fp) + sw $t1 -276($fp) + sw $t0 -268($fp) + lw $t0 -280($fp) + lw $t1 -268($fp) + lw $t0 0($t1) + sw $t1 -268($fp) + sw $t0 -280($fp) + lw $t0 -260($fp) + lw $t1 -280($fp) + move $t0 $t1 + sw $t1 -280($fp) + sw $t0 -260($fp) + lw $t0 -220($fp) + lw $t1 -260($fp) + sw $t1 0($t0) + sw $t1 -260($fp) + sw $t0 -220($fp) + lw $t0 -256($fp) + lw $t1 -68($fp) + lw $t0 0($t1) + sw $t1 -68($fp) + sw $t0 -256($fp) + lw $t0 -240($fp) + lw $t1 -88($fp) + move $t0 $t1 + sw $t1 -88($fp) + sw $t0 -240($fp) + lw $t0 -228($fp) + lw $t1 -240($fp) + move $t0 $t1 + sw $t1 -240($fp) + sw $t0 -228($fp) + lw $t0 -252($fp) + lw $t1 -228($fp) + move $a0 $t1 + li $t9 4 + mul $t0 $a0 $t9 + sw $t1 -228($fp) + sw $t0 -252($fp) + lw $t0 -252($fp) + lw $t1 -252($fp) + move $a0 $t1 + li $t9 4 + add $t0 $a0 $t9 + sw $t1 -252($fp) + sw $t0 -252($fp) + lw $t0 -252($fp) + lw $t1 -256($fp) + lw $t2 -252($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -252($fp) + sw $t1 -256($fp) + sw $t0 -252($fp) + lw $t0 -232($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -232($fp) + lw $t0 -164($fp) + lw $t1 -232($fp) + move $t0 $t1 + sw $t1 -232($fp) + sw $t0 -164($fp) + lw $t0 -252($fp) + lw $t1 -164($fp) + sw $t1 0($t0) + sw $t1 -164($fp) + sw $t0 -252($fp) + lw $t0 -180($fp) + lw $t1 -88($fp) + move $t0 $t1 + sw $t1 -88($fp) + sw $t0 -180($fp) + lw $t0 -196($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -196($fp) + lw $t0 -200($fp) + li $t0 1 + sw $t0 -200($fp) + lw $t0 -188($fp) + lw $t1 -196($fp) + lw $t2 -200($fp) + move $a0 $t1 + move $t9 $t2 + add $t0 $a0 $t9 + sw $t2 -200($fp) + sw $t1 -196($fp) + sw $t0 -188($fp) + lw $t0 -204($fp) + lw $t1 -188($fp) + move $t0 $t1 + sw $t1 -188($fp) + sw $t0 -204($fp) + lw $t0 -212($fp) + lw $t1 -204($fp) + move $t0 $t1 + sw $t1 -204($fp) + sw $t0 -212($fp) + lw $t0 -172($fp) + lw $t1 -180($fp) + lw $t2 -212($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -212($fp) + sw $t1 -180($fp) + sw $t0 -172($fp) + lw $t0 -144($fp) + lw $t1 -172($fp) + move $t0 $t1 + sw $t1 -172($fp) + sw $t0 -144($fp) + lw $t0 -152($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -152($fp) + lw $t0 -152($fp) + beqz $t0 if148_else + sw $t0 -152($fp) +if148_body: + lw $t0 -156($fp) + li $t0 0 + sw $t0 -156($fp) + lw $t0 -120($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -120($fp) + lw $t0 -288($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -288($fp) + j if148_end +if148_else: + lw $t0 -124($fp) + li $t0 1 + sw $t0 -124($fp) + lw $t0 -132($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -132($fp) + lw $t0 -288($fp) + lw $t1 -132($fp) + move $t0 $t1 + sw $t1 -132($fp) + sw $t0 -288($fp) +if148_end: + j while62_test +while62_end: + lw $t0 -68($fp) + lw $s4 0($t0) + sw $t0 -68($fp) + lw $t0 -88($fp) + move $s6 $t0 + sw $t0 -88($fp) + move $s0 $s6 + move $a0 $s0 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + lw $t0 -68($fp) + lw $s4 0($t0) + sw $t0 -68($fp) + move $s0 $s4 + lw $t0 -76($fp) + move $s4 $t0 + sw $t0 -76($fp) + move $a0 $s4 + li $t9 4 + mul $s7 $a0 $t9 + move $a0 $s7 + li $t9 4 + add $s7 $a0 $t9 + move $a0 $s0 + move $t9 $s7 + add $s7 $a0 $t9 + lw $s0 0($s7) + move $s7 $s0 + sw $s7 0($s6) + lw $t0 -68($fp) + lw $s7 0($t0) + sw $t0 -68($fp) + lw $t0 -76($fp) + move $s6 $t0 + sw $t0 -76($fp) + move $s0 $s6 + move $a0 $s0 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + lw $t0 -68($fp) + lw $s7 0($t0) + sw $t0 -68($fp) + move $s0 $s7 + lw $t0 -72($fp) + move $s7 $t0 + sw $t0 -72($fp) + move $a0 $s7 + li $t9 4 + mul $s4 $a0 $t9 + move $a0 $s4 + li $t9 4 + add $s4 $a0 $t9 + move $a0 $s0 + move $t9 $s4 + add $s4 $a0 $t9 + lw $s0 0($s4) + move $s4 $s0 + sw $s4 0($s6) + lw $t0 -68($fp) + lw $s4 0($t0) + sw $t0 -68($fp) + lw $t0 -72($fp) + move $s6 $t0 + sw $t0 -72($fp) + move $s0 $s6 + move $a0 $s0 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + lw $t0 -84($fp) + move $s4 $t0 + sw $t0 -84($fp) + move $s0 $s4 + sw $s0 0($s6) + lw $t0 -68($fp) + move $s0 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $s0 0($t0) + sw $t0 -68($fp) + lw $t0 -80($fp) + move $s6 $t0 + sw $t0 -80($fp) + move $s4 $s6 + lw $t0 -76($fp) + move $s6 $t0 + sw $t0 -76($fp) + li $s7 1 + move $a0 $s6 + move $t9 $s7 + sub $s5 $a0 $t9 + move $s7 $s5 + lw $s0 0($s0) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $s4 + move $a2 $s7 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s7 $s5 + move $s5 $s7 + lw $t0 -68($fp) + move $s7 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $s7 0($t0) + sw $t0 -68($fp) + lw $t0 -76($fp) + move $s4 $t0 + sw $t0 -76($fp) + li $s0 1 + move $a0 $s4 + move $t9 $s0 + add $s6 $a0 $t9 + move $s0 $s6 + lw $t0 -72($fp) + move $s6 $t0 + sw $t0 -72($fp) + move $s4 $s6 + lw $s7 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $s0 + move $a2 $s4 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s5 $s4 + j if43_end +if43_else: + li $s4 0 + move $s6 $s4 + move $s5 $s6 +if43_end: + li $s6 0 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 384 + jr $ra +QS_Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 92 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 0 + move $s5 $s7 + move $s7 $s5 +while214_test: + move $s5 $s7 + lw $t0 -76($fp) + lw $t0 0($s6) + sw $t0 -76($fp) + lw $t0 -84($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -80($fp) + lw $t0 -72($fp) + lw $t1 -80($fp) + move $a0 $s5 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -80($fp) + sw $t0 -72($fp) + lw $t0 -92($fp) + lw $t1 -72($fp) + move $t0 $t1 + sw $t1 -72($fp) + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -88($fp) + lw $t0 -88($fp) + beqz $t0 while214_end + sw $t0 -88($fp) +while214_body: + lw $t6 0($s6) + move $t5 $t6 + move $s4 $s7 + move $a0 $s4 + li $t9 4 + mul $s3 $a0 $t9 + move $a0 $s3 + li $t9 4 + add $s3 $a0 $t9 + move $a0 $t5 + move $t9 $s3 + add $s3 $a0 $t9 + lw $s0 0($s3) + move $s1 $s0 + move $s2 $s1 + move $a0 $s2 + jal _print + move $t4 $s7 + lw $t0 -68($fp) + li $t0 1 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $a0 $t4 + move $t9 $t0 + add $t3 $a0 $t9 + sw $t0 -68($fp) + move $t7 $t3 + move $s7 $t7 + j while214_test +while214_end: + li $t3 0 + move $t4 $t3 + move $t3 $t4 + move $v0 $t3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 92 + jr $ra +QS_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s4 $s7 + sw $s4 0($s5) + move $s4 $s6 + move $s6 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $AllocArray + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s6 $s4 + move $s4 $s6 + sw $s4 0($s5) + lw $s4 0($s5) + li $s6 0 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 20 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 1 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 7 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 2 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 12 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 3 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 18 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 4 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 2 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 5 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 11 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 6 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 6 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s6 7 + move $s4 $s6 + move $a0 $s4 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s7 + move $t9 $s6 + add $s6 $a0 $t9 + li $s7 9 + move $s4 $s7 + sw $s4 0($s6) + lw $s4 0($s5) + li $s6 8 + move $s7 $s6 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 + add $s6 $a0 $t9 + li $s4 19 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s5) + li $s5 9 + move $s6 $s5 + move $a0 $s6 + li $t9 4 + mul $s5 $a0 $t9 + move $a0 $s5 + li $t9 4 + add $s5 $a0 $t9 + move $a0 $s7 + move $t9 $s5 + add $s5 $a0 $t9 + li $s7 5 + move $s6 $s7 + sw $s6 0($s5) + li $s6 0 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/QuickSort.vaporm b/output/QuickSort.vaporm index 5c53340..99f5af1 100644 --- a/output/QuickSort.vaporm +++ b/output/QuickSort.vaporm @@ -15,17 +15,19 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(24 ) [$s7+0] = :functable_QS $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] - $s7 = 10 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + $s6 = 10 + $s4 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 + $a0 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -33,9 +35,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s7 = $s4 - PrintIntS($s7 ) + $s6 = $v0 + $s4 = $s6 + $s6 = $s4 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -56,8 +59,10 @@ func QS_Start [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 + $s5 = $s6 $s5 = [$s6+0] $s4 = $s7 + $s7 = $s4 $s5 = [$s5+12] local[8] = $t3 local[9] = $t4 @@ -66,7 +71,7 @@ func QS_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s4 + $a1 = $s7 call $s5 $t3 = local[8] $t4 = local[9] @@ -74,8 +79,10 @@ func QS_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 + $s4 = $v0 + $s7 = $s4 $s4 = $s7 + $s7 = $s6 $s7 = [$s6+0] $s7 = [$s7+8] local[8] = $t3 @@ -93,17 +100,24 @@ func QS_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s5 = $v0 + $s7 = $s5 + $s4 = $s7 + $s7 = 9999 + $s5 = $s7 + $s7 = $s5 + PrintIntS($s7 ) + $s7 = [$s6+20] + $s5 = 1 + $s3 = Sub($s7 $s5 ) + $s5 = $s3 $s4 = $s5 - $s5 = 9999 - PrintIntS($s5 ) - $s5 = [$s6+20] - $s7 = 1 - $s3 = Sub($s5 $s7 ) - $s4 = $s3 - $s3 = [$s6+0] - $s7 = 0 - $s5 = $s4 - $s3 = [$s3+4] + $s5 = $s6 + $s5 = [$s6+0] + $s3 = 0 + $s7 = $s3 + $s3 = $s4 + $s2 = $s3 + $s5 = [$s5+4] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -112,16 +126,18 @@ func QS_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s6 $a1 = $s7 - $a2 = $s5 - call $s3 + $a2 = $s2 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 + $s3 = $v0 + $s2 = $s3 $s4 = $s2 + $s2 = $s6 $s2 = [$s6+0] $s2 = [$s2+8] local[8] = $t3 @@ -138,10 +154,13 @@ func QS_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s4 = $s5 - $s5 = 0 - $v0 = $s5 + $s3 = $v0 + $s2 = $s3 + $s4 = $s2 + $s2 = 0 + $s4 = $s2 + $s2 = $s4 + $v0 = $s2 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -151,7 +170,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 42] +func QS_Sort [in 0, out 0, local 94] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -163,8 +182,10 @@ func QS_Sort [in 0, out 0, local 42] local[14] = $a0 local[17] = $a1 local[15] = $a2 + $s4 = 0 + $s3 = $s4 $t0 = local[18] - $t0 = 0 + $t0 = $s3 local[18] = $t0 $t0 = local[17] $s3 = $t0 @@ -174,366 +195,661 @@ func QS_Sort [in 0, out 0, local 42] local[15] = $t0 $s1 = LtS($s3 $s2 ) $s2 = $s1 - if0 $s2 goto :if22_else -if22_body: + $s1 = $s2 + if0 $s1 goto :if43_else +if43_body: $t0 = local[14] - $s2 = [$t0+16] + $s1 = [$t0+16] local[14] = $t0 + $s2 = $s1 $t0 = local[15] - $s1 = MulS($t0 4 ) + $s1 = $t0 local[15] = $t0 - $s1 = Add($s1 4 ) - $s1 = Add($s2 $s1 ) - $s2 = [$s1+0] - $s1 = $s2 + $s3 = MulS($s1 4 ) + $s3 = Add($s3 4 ) + $s3 = Add($s2 $s3 ) + $s2 = [$s3+0] + $s3 = $s2 + $t0 = local[70] + $t0 = $s3 + local[70] = $t0 $t0 = local[17] - $s2 = $t0 + $s3 = $t0 local[17] = $t0 - $s3 = 1 - $s0 = Sub($s2 $s3 ) + $s1 = 1 + $s0 = Sub($s3 $s1 ) + $s1 = $s0 $t0 = local[16] - $t0 = $s0 + $t0 = $s1 local[16] = $t0 + $t0 = local[15] + $s1 = $t0 + local[15] = $t0 + $s3 = $s1 $t0 = local[19] - $t1 = local[15] - $t0 = $t1 - local[15] = $t1 + $t0 = $s3 local[19] = $t0 - $t0 = local[41] - $t0 = 1 - local[41] = $t0 -while32_test: - $t0 = local[40] - $t1 = local[41] + $s3 = 1 + $t7 = $s3 + $t0 = local[69] + $t0 = $t7 + local[69] = $t0 +while62_test: + $t0 = local[68] + $t1 = local[69] $t0 = $t1 - local[41] = $t1 - local[40] = $t0 - $t0 = local[40] - if0 $t0 goto :while32_end - local[40] = $t0 -while32_body: - $t0 = local[32] + local[69] = $t1 + local[68] = $t0 + $t0 = local[26] + $t1 = local[68] + $t0 = $t1 + local[68] = $t1 + local[26] = $t0 + $t0 = local[58] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[58] = $t0 + $t0 = local[58] + if0 $t0 goto :while62_end + local[58] = $t0 +while62_body: + $t0 = local[22] $t0 = 1 - local[32] = $t0 -while34_test: - $t0 = local[31] - $t1 = local[32] + local[22] = $t0 + $t0 = local[25] + $t1 = local[22] $t0 = $t1 - local[32] = $t1 - local[31] = $t0 - $t0 = local[31] - if0 $t0 goto :while34_end - local[31] = $t0 -while34_body: + local[22] = $t1 + local[25] = $t0 + $t0 = local[23] + $t1 = local[25] + $t0 = $t1 + local[25] = $t1 + local[23] = $t0 +while68_test: + $t0 = local[24] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[24] = $t0 + $t0 = local[21] + $t1 = local[24] + $t0 = $t1 + local[24] = $t1 + local[21] = $t0 + $t0 = local[20] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[20] = $t0 + $t0 = local[20] + if0 $t0 goto :while68_end + local[20] = $t0 +while68_body: $t0 = local[16] - $s7 = $t0 + $s3 = $t0 local[16] = $t0 - $t4 = 1 - $s5 = Add($s7 $t4 ) + $t7 = 1 + $s2 = Add($s3 $t7 ) + $s4 = $s2 $t0 = local[16] - $t0 = $s5 + $t0 = $s4 local[16] = $t0 $t0 = local[14] - $s0 = [$t0+16] + $t6 = [$t0+16] local[14] = $t0 + $t3 = $t6 $t0 = local[16] - $s3 = MulS($t0 4 ) + $s0 = $t0 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: - $t0 = local[32] + $t5 = MulS($s0 4 ) + $t5 = Add($t5 4 ) + $t5 = Add($t3 $t5 ) + $t4 = [$t5+0] + $s6 = $t4 + $t0 = local[71] + $t0 = $s6 + local[71] = $t0 + $t0 = local[73] + $t1 = local[71] + $t0 = $t1 + local[71] = $t1 + local[73] = $t0 + $t0 = local[75] + $t1 = local[70] + $t0 = $t1 + local[70] = $t1 + local[75] = $t0 + $t0 = local[73] + $t1 = local[75] + $s7 = LtS($t0 $t1 ) + local[75] = $t1 + local[73] = $t0 + $t0 = local[74] + $t0 = $s7 + local[74] = $t0 + $t0 = local[80] + $t1 = local[74] + $t0 = $t1 + local[74] = $t1 + local[80] = $t0 + $t0 = local[79] + $t1 = local[80] + $t0 = $t1 + local[80] = $t1 + local[79] = $t0 + $t0 = local[79] + $s5 = Eq($t0 0 ) + local[79] = $t0 + $t0 = local[82] + $t0 = $s5 + local[82] = $t0 + $t0 = local[81] + $t1 = local[82] + $t0 = $t1 + local[82] = $t1 + local[81] = $t0 + $t0 = local[77] + $t1 = local[81] + $t0 = $t1 + local[81] = $t1 + local[77] = $t0 + $t0 = local[77] + if0 $t0 goto :if82_else + local[77] = $t0 +if82_body: + $t0 = local[76] $t0 = 0 - local[32] = $t0 - goto :if42_end -if42_else: - $t0 = local[32] + local[76] = $t0 + $t0 = local[78] + $t1 = local[76] + $t0 = $t1 + local[76] = $t1 + local[78] = $t0 + $t0 = local[23] + $t1 = local[78] + $t0 = $t1 + local[78] = $t1 + local[23] = $t0 + goto :if82_end +if82_else: + $t0 = local[72] $t0 = 1 - local[32] = $t0 -if42_end: - goto :while34_test -while34_end: - $t0 = local[32] + local[72] = $t0 + $t0 = local[72] + $s1 = $t0 + local[72] = $t0 + $t0 = local[23] + $t0 = $s1 + local[23] = $t0 +if82_end: + goto :while68_test +while68_end: + $t0 = local[31] $t0 = 1 + local[31] = $t0 + $t0 = local[29] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[29] = $t0 + $t0 = local[23] + $t1 = local[29] + $t0 = $t1 + local[29] = $t1 + local[23] = $t0 +while98_test: + $t0 = local[34] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[34] = $t0 + $t0 = local[32] + $t1 = local[34] + $t0 = $t1 + local[34] = $t1 local[32] = $t0 -while47_test: - $t0 = local[26] + $t0 = local[37] $t1 = local[32] $t0 = $t1 local[32] = $t1 - local[26] = $t0 - $t0 = local[26] - if0 $t0 goto :while47_end - local[26] = $t0 -while47_body: - $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 + local[37] = $t0 + $t0 = local[37] + if0 $t0 goto :while98_end + local[37] = $t0 +while98_body: + $t0 = local[91] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[91] = $t0 + $t0 = local[90] + $t0 = 1 + local[90] = $t0 + $t0 = local[92] + $t1 = local[91] + $t2 = local[90] + $t0 = Sub($t1 $t2 ) + local[90] = $t2 + local[91] = $t1 + local[92] = $t0 + $t0 = local[84] + $t1 = local[92] + $t0 = $t1 + local[92] = $t1 + local[84] = $t0 $t0 = local[19] - $s3 = MulS($t0 4 ) + $t1 = local[84] + $t0 = $t1 + local[84] = $t1 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: - $t0 = local[32] - $t0 = 0 - local[32] = $t0 - goto :if55_end -if55_else: - $t0 = local[32] - $t0 = 1 - local[32] = $t0 -if55_end: - goto :while47_test -while47_end: - $t0 = local[34] + $t0 = local[83] $t1 = local[14] $t0 = [$t1+16] local[14] = $t1 - local[34] = $t0 - $t0 = local[37] + local[83] = $t0 + $t0 = local[83] + $s0 = $t0 + local[83] = $t0 + $t0 = local[87] + $t1 = local[19] + $t0 = $t1 + local[19] = $t1 + local[87] = $t0 + $t0 = local[87] + $s4 = MulS($t0 4 ) + local[87] = $t0 + $s4 = Add($s4 4 ) + $s4 = Add($s0 $s4 ) + $s6 = [$s4+0] + $t0 = local[86] + $t0 = $s6 + local[86] = $t0 + $t0 = local[71] + $t1 = local[86] + $t0 = $t1 + local[86] = $t1 + local[71] = $t0 + $t0 = local[85] + $t1 = local[70] + $t0 = $t1 + local[70] = $t1 + local[85] = $t0 + $t0 = local[71] + $t5 = $t0 + local[71] = $t0 + $t0 = local[88] + $t1 = local[85] + $t0 = LtS($t1 $t5 ) + local[85] = $t1 + local[88] = $t0 + $t0 = local[88] + $t6 = $t0 + local[88] = $t0 + $s2 = $t6 + $s1 = $s2 + $t0 = local[89] + $t0 = Eq($s1 0 ) + local[89] = $t0 + $t0 = local[89] + $t7 = $t0 + local[89] = $t0 + $s3 = $t7 + $t3 = $s3 + if0 $t3 goto :if112_else +if112_body: + $t4 = 0 + $s7 = $t4 + $t0 = local[23] + $t0 = $s7 + local[23] = $t0 + goto :if112_end +if112_else: + $s5 = 1 + $t0 = local[93] + $t0 = $s5 + local[93] = $t0 + $t0 = local[23] + $t1 = local[93] + $t0 = $t1 + local[93] = $t1 + local[23] = $t0 +if112_end: + goto :while98_test +while98_end: + $t0 = local[41] + $t1 = local[14] + $t0 = [$t1+16] + local[14] = $t1 + local[41] = $t0 + $t0 = local[49] + $t1 = local[41] + $t0 = $t1 + local[41] = $t1 + local[49] = $t0 + $t0 = local[45] $t1 = local[16] - $t0 = MulS($t1 4 ) + $t0 = $t1 local[16] = $t1 - local[37] = $t0 - $t0 = local[37] - $t1 = local[37] + local[45] = $t0 + $t0 = local[39] + $t1 = local[45] + $t0 = MulS($t1 4 ) + local[45] = $t1 + local[39] = $t0 + $t0 = local[39] + $t1 = local[39] $t0 = Add($t1 4 ) - local[37] = $t1 - local[37] = $t0 - $t0 = local[37] - $t1 = local[34] - $t2 = local[37] + local[39] = $t1 + local[39] = $t0 + $t0 = local[39] + $t1 = local[49] + $t2 = local[39] $t0 = Add($t1 $t2 ) - local[37] = $t2 - local[34] = $t1 - local[37] = $t0 - $t0 = local[33] - $t1 = local[37] + local[39] = $t2 + local[49] = $t1 + local[39] = $t0 + $t0 = local[51] + $t1 = local[39] $t0 = [$t1+0] - local[37] = $t1 - local[33] = $t0 + local[39] = $t1 + local[51] = $t0 + $t0 = local[43] + $t1 = local[51] + $t0 = $t1 + local[51] = $t1 + local[43] = $t0 $t0 = local[18] - $t1 = local[33] + $t1 = local[43] $t0 = $t1 - local[33] = $t1 + local[43] = $t1 local[18] = $t0 - $t0 = local[38] + $t0 = local[53] $t1 = local[14] $t0 = [$t1+16] local[14] = $t1 - local[38] = $t0 - $t0 = local[35] + local[53] = $t0 + $t0 = local[56] $t1 = local[16] - $t0 = MulS($t1 4 ) + $t0 = $t1 local[16] = $t1 - local[35] = $t0 - $t0 = local[35] - $t1 = local[35] + local[56] = $t0 + $t0 = local[59] + $t1 = local[56] + $t0 = $t1 + local[56] = $t1 + local[59] = $t0 + $t0 = local[52] + $t1 = local[59] + $t0 = MulS($t1 4 ) + local[59] = $t1 + local[52] = $t0 + $t0 = local[52] + $t1 = local[52] $t0 = Add($t1 4 ) - local[35] = $t1 - local[35] = $t0 - $t0 = local[35] - $t1 = local[38] - $t2 = local[35] + local[52] = $t1 + local[52] = $t0 + $t0 = local[52] + $t1 = local[53] + $t2 = local[52] $t0 = Add($t1 $t2 ) - local[35] = $t2 - local[38] = $t1 - local[35] = $t0 - $t0 = local[30] + local[52] = $t2 + local[53] = $t1 + local[52] = $t0 + $t0 = local[65] $t1 = local[14] $t0 = [$t1+16] local[14] = $t1 - local[30] = $t0 - $t0 = local[21] + local[65] = $t0 + $t0 = local[66] + $t1 = local[65] + $t0 = $t1 + local[65] = $t1 + local[66] = $t0 + $t0 = local[63] $t1 = local[19] - $t0 = MulS($t1 4 ) + $t0 = $t1 local[19] = $t1 - local[21] = $t0 - $t0 = local[21] - $t1 = local[21] + local[63] = $t0 + $t0 = local[64] + $t1 = local[63] + $t0 = MulS($t1 4 ) + local[63] = $t1 + local[64] = $t0 + $t0 = local[64] + $t1 = local[64] $t0 = Add($t1 4 ) - local[21] = $t1 - local[21] = $t0 - $t0 = local[21] - $t1 = local[30] - $t2 = local[21] + local[64] = $t1 + local[64] = $t0 + $t0 = local[64] + $t1 = local[66] + $t2 = local[64] $t0 = Add($t1 $t2 ) - local[21] = $t2 - local[30] = $t1 - local[21] = $t0 - $t0 = local[36] - $t1 = local[21] + local[64] = $t2 + local[66] = $t1 + local[64] = $t0 + $t0 = local[67] + $t1 = local[64] $t0 = [$t1+0] - local[21] = $t1 - local[36] = $t0 - $t0 = local[35] - $t1 = local[36] + local[64] = $t1 + local[67] = $t0 + $t0 = local[62] + $t1 = local[67] + $t0 = $t1 + local[67] = $t1 + local[62] = $t0 + $t0 = local[52] + $t1 = local[62] [$t0+0] = $t1 - local[36] = $t1 - local[35] = $t0 - $t0 = local[20] + local[62] = $t1 + local[52] = $t0 + $t0 = local[61] $t1 = local[14] $t0 = [$t1+16] local[14] = $t1 - local[20] = $t0 - $t0 = local[27] + local[61] = $t0 + $t0 = local[57] $t1 = local[19] - $t0 = MulS($t1 4 ) + $t0 = $t1 local[19] = $t1 - local[27] = $t0 - $t0 = local[27] - $t1 = local[27] + local[57] = $t0 + $t0 = local[54] + $t1 = local[57] + $t0 = $t1 + local[57] = $t1 + local[54] = $t0 + $t0 = local[60] + $t1 = local[54] + $t0 = MulS($t1 4 ) + local[54] = $t1 + local[60] = $t0 + $t0 = local[60] + $t1 = local[60] $t0 = Add($t1 4 ) - local[27] = $t1 - local[27] = $t0 - $t0 = local[27] - $t1 = local[20] - $t2 = local[27] + local[60] = $t1 + local[60] = $t0 + $t0 = local[60] + $t1 = local[61] + $t2 = local[60] $t0 = Add($t1 $t2 ) - local[27] = $t2 - local[20] = $t1 - local[27] = $t0 - $t0 = local[27] + local[60] = $t2 + local[61] = $t1 + local[60] = $t0 + $t0 = local[55] $t1 = local[18] - [$t0+0] = $t1 + $t0 = $t1 local[18] = $t1 - local[27] = $t0 - $t0 = local[29] + local[55] = $t0 + $t0 = local[38] + $t1 = local[55] + $t0 = $t1 + local[55] = $t1 + local[38] = $t0 + $t0 = local[60] + $t1 = local[38] + [$t0+0] = $t1 + local[38] = $t1 + local[60] = $t0 + $t0 = local[42] $t1 = local[19] $t0 = $t1 local[19] = $t1 - local[29] = $t0 - $t0 = local[23] + local[42] = $t0 + $t0 = local[46] $t1 = local[16] $t0 = $t1 local[16] = $t1 - local[23] = $t0 - $t0 = local[22] + local[46] = $t0 + $t0 = local[47] $t0 = 1 - local[22] = $t0 - $t0 = local[28] - $t1 = local[23] - $t2 = local[22] + local[47] = $t0 + $t0 = local[44] + $t1 = local[46] + $t2 = local[47] $t0 = Add($t1 $t2 ) - local[22] = $t2 - local[23] = $t1 - local[28] = $t0 - $t0 = local[24] - $t1 = local[28] + local[47] = $t2 + local[46] = $t1 + local[44] = $t0 + $t0 = local[48] + $t1 = local[44] $t0 = $t1 - local[28] = $t1 - local[24] = $t0 - $t0 = local[25] - $t1 = local[29] - $t2 = local[24] + local[44] = $t1 + local[48] = $t0 + $t0 = local[50] + $t1 = local[48] + $t0 = $t1 + local[48] = $t1 + local[50] = $t0 + $t0 = local[40] + $t1 = local[42] + $t2 = local[50] $t0 = LtS($t1 $t2 ) - local[24] = $t2 - local[29] = $t1 - local[25] = $t0 - $t0 = local[39] - $t1 = local[25] + local[50] = $t2 + local[42] = $t1 + local[40] = $t0 + $t0 = local[33] + $t1 = local[40] $t0 = $t1 - local[25] = $t1 - local[39] = $t0 - $t0 = local[39] - if0 $t0 goto :if70_else - local[39] = $t0 -if70_body: - $t0 = local[41] + local[40] = $t1 + local[33] = $t0 + $t0 = local[35] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[35] = $t0 + $t0 = local[35] + if0 $t0 goto :if148_else + local[35] = $t0 +if148_body: + $t0 = local[36] $t0 = 0 - local[41] = $t0 - goto :if70_end -if70_else: - $t0 = local[41] + local[36] = $t0 + $t0 = local[27] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[27] = $t0 + $t0 = local[69] + $t1 = local[27] + $t0 = $t1 + local[27] = $t1 + local[69] = $t0 + goto :if148_end +if148_else: + $t0 = local[28] $t0 = 1 - local[41] = $t0 -if70_end: - goto :while32_test -while32_end: + local[28] = $t0 + $t0 = local[30] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 + local[30] = $t0 + $t0 = local[69] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[69] = $t0 +if148_end: + goto :while62_test +while62_end: $t0 = local[14] - $s1 = [$t0+16] + $s4 = [$t0+16] local[14] = $t0 $t0 = local[19] - $s0 = MulS($t0 4 ) + $s6 = $t0 local[19] = $t0 - $s0 = Add($s0 4 ) - $s0 = Add($s1 $s0 ) + $s0 = $s6 + $s6 = MulS($s0 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) $t0 = local[14] - $s1 = [$t0+16] + $s4 = [$t0+16] local[14] = $t0 + $s0 = $s4 $t0 = local[16] - $s4 = MulS($t0 4 ) + $s4 = $t0 local[16] = $t0 - $s4 = Add($s4 4 ) - $s4 = Add($s1 $s4 ) - $s1 = [$s4+0] - [$s0+0] = $s1 + $s7 = MulS($s4 4 ) + $s7 = Add($s7 4 ) + $s7 = Add($s0 $s7 ) + $s0 = [$s7+0] + $s7 = $s0 + [$s6+0] = $s7 $t0 = local[14] - $s1 = [$t0+16] + $s7 = [$t0+16] local[14] = $t0 $t0 = local[16] - $s0 = MulS($t0 4 ) + $s6 = $t0 local[16] = $t0 - $s0 = Add($s0 4 ) - $s0 = Add($s1 $s0 ) + $s0 = $s6 + $s6 = MulS($s0 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) $t0 = local[14] - $s1 = [$t0+16] + $s7 = [$t0+16] local[14] = $t0 + $s0 = $s7 $t0 = local[15] - $s4 = MulS($t0 4 ) + $s7 = $t0 local[15] = $t0 + $s4 = MulS($s7 4 ) $s4 = Add($s4 4 ) - $s4 = Add($s1 $s4 ) - $s1 = [$s4+0] - [$s0+0] = $s1 + $s4 = Add($s0 $s4 ) + $s0 = [$s4+0] + $s4 = $s0 + [$s6+0] = $s4 $t0 = local[14] - $s1 = [$t0+16] + $s4 = [$t0+16] local[14] = $t0 $t0 = local[15] - $s0 = MulS($t0 4 ) + $s6 = $t0 local[15] = $t0 - $s0 = Add($s0 4 ) - $s0 = Add($s1 $s0 ) + $s0 = $s6 + $s6 = MulS($s0 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) $t0 = local[18] - [$s0+0] = $t0 + $s4 = $t0 local[18] = $t0 + $s0 = $s4 + [$s6+0] = $s0 + $t0 = local[14] + $s0 = $t0 + local[14] = $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 + $s6 = $t0 local[17] = $t0 - $s1 = $s6 + $s4 = $s6 + $t0 = local[16] + $s6 = $t0 + local[16] = $t0 + $s7 = 1 + $s5 = Sub($s6 $s7 ) + $s7 = $s5 $s0 = [$s0+4] local[8] = $t3 local[9] = $t4 @@ -545,7 +861,7 @@ while32_end: $a0 = $t0 local[14] = $t0 $a1 = $s4 - $a2 = $s1 + $a2 = $s7 call $s0 $t3 = local[8] $t4 = local[9] @@ -553,21 +869,26 @@ while32_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s1 = $s6 + $s5 = $v0 + $s7 = $s5 + $s5 = $s7 + $t0 = local[14] + $s7 = $t0 + local[14] = $t0 $t0 = local[14] - $s6 = [$t0+0] + $s7 = [$t0+0] local[14] = $t0 $t0 = local[16] $s4 = $t0 local[16] = $t0 $s0 = 1 - $s3 = Add($s4 $s0 ) - $s0 = $s3 + $s6 = Add($s4 $s0 ) + $s0 = $s6 $t0 = local[15] - $s3 = $t0 + $s6 = $t0 local[15] = $t0 - $s6 = [$s6+4] + $s4 = $s6 + $s7 = [$s7+4] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -578,22 +899,27 @@ while32_end: $a0 = $t0 local[14] = $t0 $a1 = $s0 - $a2 = $s3 - call $s6 + $a2 = $s4 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s1 = $s4 - goto :if22_end -if22_else: - $s1 = 0 -if22_end: - $s1 = 0 - $v0 = $s1 + $s6 = $v0 + $s4 = $s6 + $s5 = $s4 + goto :if43_end +if43_else: + $s4 = 0 + $s6 = $s4 + $s5 = $s6 +if43_end: + $s6 = 0 + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -603,7 +929,7 @@ if22_end: $s6 = local[6] $s7 = local[7] ret -func QS_Print [in 0, out 0, local 14] +func QS_Print [in 0, out 0, local 21] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -614,27 +940,66 @@ func QS_Print [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = 0 -while104_test: $s5 = $s7 - $s1 = [$s6+20] - $s2 = LtS($s5 $s1 ) - $t7 = $s2 - if0 $t7 goto :while104_end -while104_body: - $t5 = [$s6+16] - $t6 = MulS($s7 4 ) - $t6 = Add($t6 4 ) - $t6 = Add($t5 $t6 ) - $s0 = [$t6+0] - $t3 = $s0 - PrintIntS($t3 ) + $s7 = $s5 +while214_test: + $s5 = $s7 + $t0 = local[16] + $t0 = [$s6+20] + local[16] = $t0 + $t0 = local[18] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[18] = $t0 + $t0 = local[17] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 + local[17] = $t0 + $t0 = local[15] + $t1 = local[17] + $t0 = LtS($s5 $t1 ) + local[17] = $t1 + local[15] = $t0 + $t0 = local[20] + $t1 = local[15] + $t0 = $t1 + local[15] = $t1 + local[20] = $t0 + $t0 = local[19] + $t1 = local[20] + $t0 = $t1 + local[20] = $t1 + local[19] = $t0 + $t0 = local[19] + if0 $t0 goto :while214_end + local[19] = $t0 +while214_body: + $t6 = [$s6+16] + $t5 = $t6 $s4 = $s7 - $s3 = 1 - $t4 = Add($s4 $s3 ) - $s7 = $t4 - goto :while104_test -while104_end: + $s3 = MulS($s4 4 ) + $s3 = Add($s3 4 ) + $s3 = Add($t5 $s3 ) + $s0 = [$s3+0] + $s1 = $s0 + $s2 = $s1 + PrintIntS($s2 ) + $t4 = $s7 + $t0 = local[14] + $t0 = 1 + local[14] = $t0 + $t0 = local[14] + $t3 = Add($t4 $t0 ) + local[14] = $t0 + $t7 = $t3 + $s7 = $t7 + goto :while214_test +while214_end: $t3 = 0 + $t4 = $t3 + $t3 = $t4 $v0 = $t3 $s0 = local[0] $s1 = local[1] @@ -654,16 +1019,20 @@ func QS_Init [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+20] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s4 = $s7 + [$s5+20] = $s4 + $s4 = $s6 + $s6 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s7 + $a0 = $s6 call :AllocArray $t3 = local[8] $t4 = local[9] @@ -671,59 +1040,103 @@ func QS_Init [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - [$s6+16] = $s5 - $s5 = [$s6+16] - $s7 = MulS(0 4 ) - $s7 = Add($s7 4 ) - $s7 = Add($s5 $s7 ) - [$s7+0] = 20 - $s7 = [$s6+16] - $s5 = MulS(1 4 ) - $s5 = Add($s5 4 ) - $s5 = Add($s7 $s5 ) - [$s5+0] = 7 - $s5 = [$s6+16] - $s7 = MulS(2 4 ) - $s7 = Add($s7 4 ) - $s7 = Add($s5 $s7 ) - [$s7+0] = 12 - $s7 = [$s6+16] - $s5 = MulS(3 4 ) - $s5 = Add($s5 4 ) - $s5 = Add($s7 $s5 ) - [$s5+0] = 18 - $s5 = [$s6+16] - $s7 = MulS(4 4 ) - $s7 = Add($s7 4 ) - $s7 = Add($s5 $s7 ) - [$s7+0] = 2 - $s7 = [$s6+16] - $s5 = MulS(5 4 ) - $s5 = Add($s5 4 ) - $s5 = Add($s7 $s5 ) - [$s5+0] = 11 - $s5 = [$s6+16] - $s7 = MulS(6 4 ) - $s7 = Add($s7 4 ) - $s7 = Add($s5 $s7 ) - [$s7+0] = 6 - $s7 = [$s6+16] - $s5 = MulS(7 4 ) - $s5 = Add($s5 4 ) - $s5 = Add($s7 $s5 ) - [$s5+0] = 9 - $s5 = [$s6+16] - $s7 = MulS(8 4 ) - $s7 = Add($s7 4 ) - $s7 = Add($s5 $s7 ) - [$s7+0] = 19 - $s7 = [$s6+16] - $s6 = MulS(9 4 ) + $s4 = $v0 + $s6 = $s4 + $s4 = $s6 + [$s5+16] = $s4 + $s4 = [$s5+16] + $s6 = 0 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 20 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 1 + $s4 = $s6 + $s6 = MulS($s4 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) + $s7 = 7 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 2 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 12 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 3 + $s4 = $s6 + $s6 = MulS($s4 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) + $s7 = 18 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 4 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 2 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 5 + $s4 = $s6 + $s6 = MulS($s4 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s7 $s6 ) + $s7 = 11 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 6 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 6 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s6 = 7 + $s4 = $s6 + $s6 = MulS($s4 4 ) $s6 = Add($s6 4 ) $s6 = Add($s7 $s6 ) - [$s6+0] = 5 + $s7 = 9 + $s4 = $s7 + [$s6+0] = $s4 + $s4 = [$s5+16] + $s6 = 8 + $s7 = $s6 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s6 = Add($s4 $s6 ) + $s4 = 19 + $s7 = $s4 + [$s6+0] = $s7 + $s7 = [$s5+16] + $s5 = 9 + $s6 = $s5 + $s5 = MulS($s6 4 ) + $s5 = Add($s5 4 ) + $s5 = Add($s7 $s5 ) + $s7 = 5 + $s6 = $s7 + [$s5+0] = $s6 $s6 = 0 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] diff --git a/output/TreeVisitor.s b/output/TreeVisitor.s new file mode 100644 index 0000000..eeaeaec --- /dev/null +++ b/output/TreeVisitor.s @@ -0,0 +1,4253 @@ +.data +functable_TV: + TV_Start +functable_Tree: + Tree_Init + Tree_SetRight + Tree_SetLeft + Tree_GetRight + Tree_GetLeft + Tree_GetKey + Tree_SetKey + Tree_GetHas_Right + Tree_GetHas_Left + Tree_SetHas_Left + Tree_SetHas_Right + Tree_Compare + Tree_Insert + Tree_Delete + Tree_Remove + Tree_RemoveRight + Tree_RemoveLeft + Tree_Search + Tree_Print + Tree_RecPrint + Tree_accept +functable_Visitor: + Visitor_visit +functable_MyVisitor: + MyVisitor_visit + Visitor_visit +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_TV + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s5 $s6 + move $s6 $s5 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +TV_Start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + li $a0 108 + jal _heapAlloc + move $s6 $v0 + la $t9 functable_Tree + sw $t9 0($s6) + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 16 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s5 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s5 $s4 + move $s6 $s5 + li $s5 100000000 + move $s4 $s5 + move $s5 $s4 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + li $s5 8 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + li $s3 24 + move $s4 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s4 $s3 + move $s6 $s4 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s3 0($s4) + li $s4 4 + move $s5 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s5 $s4 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + li $s5 12 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + li $s3 20 + move $s4 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s4 $s3 + move $s6 $s4 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s3 0($s4) + li $s4 28 + move $s5 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s5 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s5 $s4 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + li $s5 14 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s6 $s5 + li $s5 100000000 + move $s3 $s5 + move $s5 $s3 + move $a0 $s5 + jal _print + li $a0 16 + jal _heapAlloc + move $s5 $v0 + la $t9 functable_MyVisitor + sw $t9 0($s5) + move $s3 $s5 + move $s5 $s3 + move $s3 $s5 + li $s5 50000000 + move $s4 $s5 + move $s5 $s4 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + move $s5 $s3 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + li $s5 100000000 + move $s3 $s5 + move $s5 $s3 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + li $s5 24 + move $s4 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + li $s5 12 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + li $s5 16 + move $s4 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + li $s5 50 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + li $s5 12 + move $s4 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + li $s5 12 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s6 $s3 + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s5 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s5 $s3 + move $s6 $s5 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s6 0($s5) + li $s5 12 + move $s3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s3 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + move $a0 $s5 + jal _print + li $s5 0 + move $s3 $s5 + move $s5 $s3 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 0 + move $s7 $s6 + sw $s7 0($s5) + li $s7 0 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetKey: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_GetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetHas_Left: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_SetHas_Right: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + li $s6 1 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_Compare: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + li $s4 0 + move $s5 $s4 + move $s4 $s5 + move $s5 $s7 + li $s3 1 + move $a0 $s5 + move $t9 $s3 + add $s2 $a0 $t9 + move $s3 $s2 + move $s2 $s3 + move $s3 $s6 + move $s5 $s7 + move $a0 $s3 + move $t9 $s5 + slt $s7 $a0 $t9 + move $s5 $s7 + move $s7 $s5 + beqz $s7 if216_else +if216_body: + li $s7 0 + move $s5 $s7 + move $s4 $s5 + j if216_end +if216_else: + move $s5 $s6 + move $s6 $s2 + move $a0 $s5 + move $t9 $s6 + slt $s2 $a0 $t9 + move $s6 $s2 + move $s2 $s6 + move $s6 $s2 + move $a0 $s6 + li $t9 0 +NULL $s2 $a0 $t9 + move $s6 $s2 + move $s2 $s6 + move $s6 $s2 + beqz $s6 if223_else +if223_body: + li $s6 0 + move $s2 $s6 + move $s4 $s2 + j if223_end +if223_else: + li $s2 1 + move $s6 $s2 + move $s4 $s6 +if223_end: +if216_end: + move $s6 $s4 + move $s4 $s6 + move $s6 $s4 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_Insert: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 292 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + li $a0 108 + jal _heapAlloc + move $s5 $v0 + la $t9 functable_Tree + sw $t9 0($s5) + move $s4 $s5 + move $s5 $s4 + move $s4 $s5 + move $s5 $s4 + move $s4 $s5 + lw $s5 0($s4) + lw $s3 0($s5) + move $s5 $s7 + move $s2 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + move $a1 $s2 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s2 $s5 + move $s5 $s2 + move $s2 $s6 + move $s6 $s2 + move $s2 $s6 + li $s6 1 + move $s3 $s6 + move $s6 $s3 +while254_test: + move $s3 $s6 + lw $t0 -224($fp) + move $t0 $s3 + sw $t0 -224($fp) + lw $t0 -240($fp) + lw $t1 -224($fp) + move $t0 $t1 + sw $t1 -224($fp) + sw $t0 -240($fp) + lw $t0 -240($fp) + beqz $t0 while254_end + sw $t0 -240($fp) +while254_body: + lw $t0 -208($fp) + move $t0 $s2 + sw $t0 -208($fp) + lw $t0 -208($fp) + move $s2 $t0 + sw $t0 -208($fp) + lw $t0 -220($fp) + lw $t0 0($s2) + sw $t0 -220($fp) + lw $t0 -216($fp) + lw $t1 -220($fp) + lw $t0 0($t1) + sw $t1 -220($fp) + sw $t0 -216($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -216($fp) + lw $t1 -216($fp) + jalr $t1 + sw $t1 -216($fp) + sw $t0 -216($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -212($fp) + move $t0 $v0 + sw $t0 -212($fp) + lw $t0 -188($fp) + lw $t1 -212($fp) + move $t0 $t1 + sw $t1 -212($fp) + sw $t0 -188($fp) + lw $t0 -236($fp) + lw $t1 -188($fp) + move $t0 $t1 + sw $t1 -188($fp) + sw $t0 -236($fp) + lw $t0 -120($fp) + move $t0 $s7 + sw $t0 -120($fp) + lw $t0 -160($fp) + lw $t1 -236($fp) + move $t0 $t1 + sw $t1 -236($fp) + sw $t0 -160($fp) + lw $t0 -184($fp) + lw $t1 -120($fp) + lw $t2 -160($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -160($fp) + sw $t1 -120($fp) + sw $t0 -184($fp) + lw $t0 -152($fp) + lw $t1 -184($fp) + move $t0 $t1 + sw $t1 -184($fp) + sw $t0 -152($fp) + lw $t0 -176($fp) + lw $t1 -152($fp) + move $t0 $t1 + sw $t1 -152($fp) + sw $t0 -176($fp) + lw $t0 -176($fp) + beqz $t0 if263_else + sw $t0 -176($fp) +if263_body: + lw $t0 -136($fp) + move $t0 $s2 + sw $t0 -136($fp) + lw $t0 -136($fp) + move $s2 $t0 + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t0 0($s2) + sw $t0 -132($fp) + lw $t0 -148($fp) + lw $t1 -132($fp) + lw $t0 0($t1) + sw $t1 -132($fp) + sw $t0 -148($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -148($fp) + lw $t1 -148($fp) + jalr $t1 + sw $t1 -148($fp) + sw $t0 -148($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -168($fp) + move $t0 $v0 + sw $t0 -168($fp) + lw $t0 -144($fp) + lw $t1 -168($fp) + move $t0 $t1 + sw $t1 -168($fp) + sw $t0 -144($fp) + lw $t0 -112($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -112($fp) + lw $t0 -112($fp) + beqz $t0 if268_else + sw $t0 -112($fp) +if268_body: + move $t7 $s2 + move $s2 $t7 + lw $t0 -96($fp) + lw $t0 0($s2) + sw $t0 -96($fp) + lw $t0 -88($fp) + lw $t1 -96($fp) + lw $t0 0($t1) + sw $t1 -96($fp) + sw $t0 -88($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -88($fp) + lw $t1 -88($fp) + jalr $t1 + sw $t1 -88($fp) + sw $t0 -88($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t5 $v0 + lw $t0 -108($fp) + move $t0 $t5 + sw $t0 -108($fp) + lw $t0 -108($fp) + move $s2 $t0 + sw $t0 -108($fp) + j if268_end +if268_else: + lw $t0 -104($fp) + li $t0 0 + sw $t0 -104($fp) + lw $t0 -76($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -76($fp) + lw $t0 -76($fp) + move $s6 $t0 + sw $t0 -76($fp) + lw $t0 -84($fp) + move $t0 $s2 + sw $t0 -84($fp) + lw $t0 -84($fp) + move $s2 $t0 + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t0 0($s2) + sw $t0 -80($fp) + lw $t0 -248($fp) + lw $t1 -80($fp) + lw $t0 0($t1) + sw $t1 -80($fp) + sw $t0 -248($fp) + lw $t0 -256($fp) + li $t0 1 + sw $t0 -256($fp) + lw $t0 -252($fp) + lw $t1 -256($fp) + move $t0 $t1 + sw $t1 -256($fp) + sw $t0 -252($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -252($fp) + move $a1 $t0 + sw $t0 -252($fp) + lw $t0 -248($fp) + lw $t1 -248($fp) + jalr $t1 + sw $t1 -248($fp) + sw $t0 -248($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -72($fp) + move $t0 $v0 + sw $t0 -72($fp) + lw $t0 -276($fp) + lw $t1 -72($fp) + move $t0 $t1 + sw $t1 -72($fp) + sw $t0 -276($fp) + lw $t0 -276($fp) + move $s5 $t0 + sw $t0 -276($fp) + lw $t0 -284($fp) + move $t0 $s2 + sw $t0 -284($fp) + lw $t0 -284($fp) + move $s2 $t0 + sw $t0 -284($fp) + lw $t0 -280($fp) + lw $t0 0($s2) + sw $t0 -280($fp) + lw $t0 -264($fp) + lw $t1 -280($fp) + lw $t0 0($t1) + sw $t1 -280($fp) + sw $t0 -264($fp) + lw $t0 -260($fp) + move $t0 $s4 + sw $t0 -260($fp) + lw $t0 -268($fp) + lw $t1 -260($fp) + move $t0 $t1 + sw $t1 -260($fp) + sw $t0 -268($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -268($fp) + move $a1 $t0 + sw $t0 -268($fp) + lw $t0 -264($fp) + lw $t1 -264($fp) + jalr $t1 + sw $t1 -264($fp) + sw $t0 -264($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -272($fp) + move $t0 $v0 + sw $t0 -272($fp) + lw $t0 -196($fp) + lw $t1 -272($fp) + move $t0 $t1 + sw $t1 -272($fp) + sw $t0 -196($fp) + lw $t0 -196($fp) + move $s5 $t0 + sw $t0 -196($fp) +if268_end: + j if263_end +if263_else: + lw $t0 -204($fp) + move $t0 $s2 + sw $t0 -204($fp) + lw $t0 -204($fp) + move $s2 $t0 + sw $t0 -204($fp) + lw $t0 -200($fp) + lw $t0 0($s2) + sw $t0 -200($fp) + lw $t0 -232($fp) + lw $t1 -200($fp) + lw $t0 0($t1) + sw $t1 -200($fp) + sw $t0 -232($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -232($fp) + lw $t1 -232($fp) + jalr $t1 + sw $t1 -232($fp) + sw $t0 -232($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -192($fp) + move $t0 $v0 + sw $t0 -192($fp) + lw $t0 -228($fp) + lw $t1 -192($fp) + move $t0 $t1 + sw $t1 -192($fp) + sw $t0 -228($fp) + lw $t0 -244($fp) + lw $t1 -228($fp) + move $t0 $t1 + sw $t1 -228($fp) + sw $t0 -244($fp) + lw $t0 -244($fp) + beqz $t0 if295_else + sw $t0 -244($fp) +if295_body: + move $t3 $s2 + move $s2 $t3 + lw $t3 0($s2) + lw $t4 0($t3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $t4 $t3 + move $s2 $t4 + j if295_end +if295_else: + lw $t0 -116($fp) + li $t0 0 + sw $t0 -116($fp) + lw $t0 -128($fp) + lw $t1 -116($fp) + move $t0 $t1 + sw $t1 -116($fp) + sw $t0 -128($fp) + lw $t0 -128($fp) + move $s6 $t0 + sw $t0 -128($fp) + lw $t0 -164($fp) + move $t0 $s2 + sw $t0 -164($fp) + lw $t0 -164($fp) + move $s2 $t0 + sw $t0 -164($fp) + lw $t0 -156($fp) + lw $t0 0($s2) + sw $t0 -156($fp) + lw $t0 -180($fp) + lw $t1 -156($fp) + lw $t0 0($t1) + sw $t1 -156($fp) + sw $t0 -180($fp) + lw $t0 -172($fp) + li $t0 1 + sw $t0 -172($fp) + lw $t0 -140($fp) + lw $t1 -172($fp) + move $t0 $t1 + sw $t1 -172($fp) + sw $t0 -140($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -140($fp) + move $a1 $t0 + sw $t0 -140($fp) + lw $t0 -180($fp) + lw $t1 -180($fp) + jalr $t1 + sw $t1 -180($fp) + sw $t0 -180($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -124($fp) + move $t0 $v0 + sw $t0 -124($fp) + lw $t0 -68($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -68($fp) + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + move $s0 $s2 + move $s2 $s0 + lw $s1 0($s2) + lw $t0 -292($fp) + lw $t0 0($s1) + sw $t0 -292($fp) + move $t6 $s4 + lw $t0 -100($fp) + move $t0 $t6 + sw $t0 -100($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s2 + lw $t0 -100($fp) + move $a1 $t0 + sw $t0 -100($fp) + lw $t0 -292($fp) + lw $t1 -292($fp) + jalr $t1 + sw $t1 -292($fp) + sw $t0 -292($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -288($fp) + move $t0 $v0 + sw $t0 -288($fp) + lw $t0 -92($fp) + lw $t1 -288($fp) + move $t0 $t1 + sw $t1 -288($fp) + sw $t0 -92($fp) + lw $t0 -92($fp) + move $s5 $t0 + sw $t0 -92($fp) +if295_end: +if263_end: + j while254_test +while254_end: + li $t5 1 + move $t6 $t5 + move $t5 $t6 + move $v0 $t5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 292 + jr $ra +Tree_Delete: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 372 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + move $s4 $s5 + move $s5 $s4 + move $s4 $s6 + move $s3 $s4 + move $s4 $s3 + li $s3 1 + move $s2 $s3 + move $s3 $s2 + li $s2 0 + move $s1 $s2 + lw $t0 -68($fp) + move $t0 $s1 + sw $t0 -68($fp) + li $s1 1 + move $s0 $s1 + move $s1 $s0 +while335_test: + move $s0 $s3 + lw $t0 -304($fp) + move $t0 $s0 + sw $t0 -304($fp) + lw $t0 -308($fp) + lw $t1 -304($fp) + move $t0 $t1 + sw $t1 -304($fp) + sw $t0 -308($fp) + lw $t0 -308($fp) + beqz $t0 while335_end + sw $t0 -308($fp) +while335_body: + lw $t0 -300($fp) + move $t0 $s5 + sw $t0 -300($fp) + lw $t0 -300($fp) + move $s5 $t0 + sw $t0 -300($fp) + lw $t0 -296($fp) + lw $t0 0($s5) + sw $t0 -296($fp) + lw $t0 -276($fp) + lw $t1 -296($fp) + lw $t0 0($t1) + sw $t1 -296($fp) + sw $t0 -276($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -276($fp) + lw $t1 -276($fp) + jalr $t1 + sw $t1 -276($fp) + sw $t0 -276($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -288($fp) + move $t0 $v0 + sw $t0 -288($fp) + lw $t0 -272($fp) + lw $t1 -288($fp) + move $t0 $t1 + sw $t1 -288($fp) + sw $t0 -272($fp) + lw $t0 -292($fp) + lw $t1 -272($fp) + move $t0 $t1 + sw $t1 -272($fp) + sw $t0 -292($fp) + lw $t0 -280($fp) + move $t0 $s7 + sw $t0 -280($fp) + lw $t0 -168($fp) + lw $t1 -292($fp) + move $t0 $t1 + sw $t1 -292($fp) + sw $t0 -168($fp) + lw $t0 -284($fp) + lw $t1 -280($fp) + lw $t2 -168($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -168($fp) + sw $t1 -280($fp) + sw $t0 -284($fp) + lw $t0 -164($fp) + lw $t1 -284($fp) + move $t0 $t1 + sw $t1 -284($fp) + sw $t0 -164($fp) + lw $t0 -128($fp) + lw $t1 -164($fp) + move $t0 $t1 + sw $t1 -164($fp) + sw $t0 -128($fp) + lw $t0 -128($fp) + beqz $t0 if344_else + sw $t0 -128($fp) +if344_body: + lw $t0 -148($fp) + move $t0 $s5 + sw $t0 -148($fp) + lw $t0 -148($fp) + move $s5 $t0 + sw $t0 -148($fp) + lw $t0 -160($fp) + lw $t0 0($s5) + sw $t0 -160($fp) + lw $t0 -156($fp) + lw $t1 -160($fp) + lw $t0 0($t1) + sw $t1 -160($fp) + sw $t0 -156($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -156($fp) + lw $t1 -156($fp) + jalr $t1 + sw $t1 -156($fp) + sw $t0 -156($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -152($fp) + move $t0 $v0 + sw $t0 -152($fp) + lw $t0 -136($fp) + lw $t1 -152($fp) + move $t0 $t1 + sw $t1 -152($fp) + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -132($fp) + lw $t0 -132($fp) + beqz $t0 if349_else + sw $t0 -132($fp) +if349_body: + lw $t0 -144($fp) + move $t0 $s5 + sw $t0 -144($fp) + lw $t0 -140($fp) + lw $t1 -144($fp) + move $t0 $t1 + sw $t1 -144($fp) + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s4 $t0 + sw $t0 -140($fp) + lw $t0 -372($fp) + move $t0 $s5 + sw $t0 -372($fp) + lw $t0 -372($fp) + move $s5 $t0 + sw $t0 -372($fp) + lw $t5 0($s5) + lw $t0 -108($fp) + lw $t0 0($t5) + sw $t0 -108($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -108($fp) + lw $t1 -108($fp) + jalr $t1 + sw $t1 -108($fp) + sw $t0 -108($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -124($fp) + move $t0 $v0 + sw $t0 -124($fp) + lw $t0 -104($fp) + lw $t1 -124($fp) + move $t0 $t1 + sw $t1 -124($fp) + sw $t0 -104($fp) + lw $t0 -104($fp) + move $s5 $t0 + sw $t0 -104($fp) + j if349_end +if349_else: + lw $t0 -116($fp) + li $t0 0 + sw $t0 -116($fp) + lw $t0 -112($fp) + lw $t1 -116($fp) + move $t0 $t1 + sw $t1 -116($fp) + sw $t0 -112($fp) + lw $t0 -112($fp) + move $s3 $t0 + sw $t0 -112($fp) +if349_end: + j if344_end +if344_else: + lw $t0 -88($fp) + lw $t1 -292($fp) + move $t0 $t1 + sw $t1 -292($fp) + sw $t0 -88($fp) + lw $t0 -100($fp) + move $t0 $s7 + sw $t0 -100($fp) + lw $t0 -92($fp) + lw $t1 -88($fp) + lw $t2 -100($fp) + move $a0 $t1 + move $t9 $t2 + slt $t0 $a0 $t9 + sw $t2 -100($fp) + sw $t1 -88($fp) + sw $t0 -92($fp) + lw $t0 -96($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -96($fp) + lw $t0 -188($fp) + lw $t1 -96($fp) + move $t0 $t1 + sw $t1 -96($fp) + sw $t0 -188($fp) + lw $t0 -188($fp) + beqz $t0 if364_else + sw $t0 -188($fp) +if364_body: + move $s2 $s5 + move $s5 $s2 + lw $s2 0($s5) + lw $t3 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $t3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $t3 $s2 + move $s2 $t3 + beqz $s2 if369_else +if369_body: + move $s2 $s5 + move $t3 $s2 + move $s4 $t3 + move $t3 $s5 + move $s5 $t3 + lw $t3 0($s5) + lw $s2 0($t3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $s2 $t3 + move $s5 $s2 + j if369_end +if369_else: + li $s2 0 + move $t3 $s2 + move $s3 $t3 +if369_end: + j if364_end +if364_else: + lw $t0 -184($fp) + move $t0 $s1 + sw $t0 -184($fp) + lw $t0 -180($fp) + lw $t1 -184($fp) + move $t0 $t1 + sw $t1 -184($fp) + sw $t0 -180($fp) + lw $t0 -176($fp) + lw $t1 -180($fp) + move $t0 $t1 + sw $t1 -180($fp) + sw $t0 -176($fp) + lw $t0 -176($fp) + beqz $t0 if384_else + sw $t0 -176($fp) +if384_body: + lw $t0 -232($fp) + move $t0 $s5 + sw $t0 -232($fp) + lw $t0 -232($fp) + move $s5 $t0 + sw $t0 -232($fp) + lw $t0 -244($fp) + lw $t0 0($s5) + sw $t0 -244($fp) + lw $t0 -240($fp) + lw $t1 -244($fp) + lw $t0 0($t1) + sw $t1 -244($fp) + sw $t0 -240($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -240($fp) + lw $t1 -240($fp) + jalr $t1 + sw $t1 -240($fp) + sw $t0 -240($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -236($fp) + move $t0 $v0 + sw $t0 -236($fp) + lw $t0 -260($fp) + lw $t1 -236($fp) + move $t0 $t1 + sw $t1 -236($fp) + sw $t0 -260($fp) + lw $t0 -248($fp) + lw $t1 -260($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -260($fp) + sw $t0 -248($fp) + lw $t0 -256($fp) + lw $t1 -248($fp) + move $t0 $t1 + sw $t1 -248($fp) + sw $t0 -256($fp) + lw $t0 -252($fp) + move $t0 $s5 + sw $t0 -252($fp) + lw $t0 -252($fp) + move $s5 $t0 + sw $t0 -252($fp) + lw $t0 -212($fp) + lw $t0 0($s5) + sw $t0 -212($fp) + lw $t0 -208($fp) + lw $t1 -212($fp) + lw $t0 0($t1) + sw $t1 -212($fp) + sw $t0 -208($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -208($fp) + lw $t1 -208($fp) + jalr $t1 + sw $t1 -208($fp) + sw $t0 -208($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -264($fp) + move $t0 $v0 + sw $t0 -264($fp) + lw $t0 -196($fp) + lw $t1 -264($fp) + move $t0 $t1 + sw $t1 -264($fp) + sw $t0 -196($fp) + lw $t0 -268($fp) + lw $t1 -196($fp) + move $a0 $t1 + li $t9 0 +NULL $t0 $a0 $t9 + sw $t1 -196($fp) + sw $t0 -268($fp) + lw $t0 -192($fp) + lw $t1 -268($fp) + move $t0 $t1 + sw $t1 -268($fp) + sw $t0 -192($fp) + lw $t0 -204($fp) + lw $t1 -256($fp) + li $a0 1 + move $t9 $t1 +NULL $t0 $a0 $t9 + sw $t1 -256($fp) + sw $t0 -204($fp) + lw $t0 -200($fp) + lw $t1 -192($fp) + li $a0 1 + move $t9 $t1 +NULL $t0 $a0 $t9 + sw $t1 -192($fp) + sw $t0 -200($fp) + lw $t0 -172($fp) + lw $t1 -204($fp) + lw $t2 -200($fp) + move $a0 $t1 + move $t9 $t2 +NULL $t0 $a0 $t9 + sw $t2 -200($fp) + sw $t1 -204($fp) + sw $t0 -172($fp) + lw $t0 -220($fp) + lw $t1 -172($fp) + move $t0 $t1 + sw $t1 -172($fp) + sw $t0 -220($fp) + lw $t0 -216($fp) + lw $t1 -220($fp) + move $t0 $t1 + sw $t1 -220($fp) + sw $t0 -216($fp) + lw $t0 -216($fp) + beqz $t0 if387_else + sw $t0 -216($fp) +if387_body: + lw $t0 -224($fp) + li $t0 1 + sw $t0 -224($fp) + lw $t0 -332($fp) + lw $t1 -224($fp) + move $t0 $t1 + sw $t1 -224($fp) + sw $t0 -332($fp) + lw $t0 -228($fp) + lw $t1 -332($fp) + move $t0 $t1 + sw $t1 -332($fp) + sw $t0 -228($fp) + j if387_end +if387_else: + lw $t0 -336($fp) + move $t0 $s6 + sw $t0 -336($fp) + lw $t0 -320($fp) + lw $t0 0($s6) + sw $t0 -320($fp) + lw $t0 -316($fp) + move $t0 $s4 + sw $t0 -316($fp) + lw $t0 -328($fp) + lw $t1 -316($fp) + move $t0 $t1 + sw $t1 -316($fp) + sw $t0 -328($fp) + lw $t0 -324($fp) + move $t0 $s5 + sw $t0 -324($fp) + lw $t0 -348($fp) + lw $t1 -324($fp) + move $t0 $t1 + sw $t1 -324($fp) + sw $t0 -348($fp) + lw $t0 -320($fp) + lw $t1 -320($fp) + lw $t0 0($t1) + sw $t1 -320($fp) + sw $t0 -320($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + lw $t0 -328($fp) + move $a1 $t0 + sw $t0 -328($fp) + lw $t0 -348($fp) + move $a2 $t0 + sw $t0 -348($fp) + lw $t0 -320($fp) + lw $t1 -320($fp) + jalr $t1 + sw $t1 -320($fp) + sw $t0 -320($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -340($fp) + move $t0 $v0 + sw $t0 -340($fp) + lw $t0 -344($fp) + lw $t1 -340($fp) + move $t0 $t1 + sw $t1 -340($fp) + sw $t0 -344($fp) + lw $t0 -228($fp) + lw $t1 -344($fp) + move $t0 $t1 + sw $t1 -344($fp) + sw $t0 -228($fp) +if387_end: + j if384_end +if384_else: + lw $t0 -120($fp) + move $t0 $s6 + sw $t0 -120($fp) + lw $t7 0($s6) + move $t6 $s4 + move $t4 $t6 + lw $t0 -368($fp) + move $t0 $s5 + sw $t0 -368($fp) + lw $t0 -72($fp) + lw $t1 -368($fp) + move $t0 $t1 + sw $t1 -368($fp) + sw $t0 -72($fp) + lw $t7 0($t7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $t4 + lw $t0 -72($fp) + move $a2 $t0 + sw $t0 -72($fp) + jalr $t7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -360($fp) + move $t0 $v0 + sw $t0 -360($fp) + lw $t0 -76($fp) + lw $t1 -360($fp) + move $t0 $t1 + sw $t1 -360($fp) + sw $t0 -76($fp) + lw $t0 -228($fp) + lw $t1 -76($fp) + move $t0 $t1 + sw $t1 -76($fp) + sw $t0 -228($fp) +if384_end: + lw $t0 -80($fp) + li $t0 1 + sw $t0 -80($fp) + lw $t0 -84($fp) + lw $t1 -80($fp) + move $t0 $t1 + sw $t1 -80($fp) + sw $t0 -84($fp) + lw $t0 -68($fp) + lw $t1 -84($fp) + move $t0 $t1 + sw $t1 -84($fp) + sw $t0 -68($fp) + lw $t0 -364($fp) + li $t0 0 + sw $t0 -364($fp) + lw $t0 -352($fp) + lw $t1 -364($fp) + move $t0 $t1 + sw $t1 -364($fp) + sw $t0 -352($fp) + lw $t0 -352($fp) + move $s3 $t0 + sw $t0 -352($fp) +if364_end: +if344_end: + lw $t0 -356($fp) + li $t0 0 + sw $t0 -356($fp) + lw $t0 -312($fp) + lw $t1 -356($fp) + move $t0 $t1 + sw $t1 -356($fp) + sw $t0 -312($fp) + lw $t0 -312($fp) + move $s1 $t0 + sw $t0 -312($fp) + j while335_test +while335_end: + lw $t0 -68($fp) + move $t4 $t0 + sw $t0 -68($fp) + move $t5 $t4 + move $t4 $t5 + move $v0 $t4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 372 + jr $ra +Tree_Remove: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $s4 $s3 + beqz $s4 if433_else +if433_body: + move $s4 $s5 + lw $s4 0($s5) + move $s3 $s6 + move $s2 $s3 + move $s3 $s7 + move $s1 $s3 + lw $s4 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s2 + move $a2 $s1 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s1 $s3 + move $s3 $s1 + j if433_end +if433_else: + move $s1 $s7 + move $s7 $s1 + lw $s1 0($s7) + lw $s2 0($s1) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + move $s2 $s1 + move $s1 $s2 + beqz $s1 if447_else +if447_body: + move $s1 $s5 + lw $s1 0($s5) + move $s2 $s6 + move $s4 $s2 + move $s2 $s7 + move $s0 $s2 + lw $s1 0($s1) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s4 + move $a2 $s0 + jalr $s1 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s0 $s2 + move $s3 $s0 + j if447_end +if447_else: + move $s0 $s7 + move $s7 $s0 + lw $s0 0($s7) + lw $s2 0($s0) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s2 $s0 + move $s0 $s2 + move $s2 $s6 + move $s6 $s2 + lw $s2 0($s6) + lw $s7 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s7 $s2 + move $s2 $s7 + move $s7 $s2 + lw $s2 0($s7) + lw $s4 0($s2) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s4 $s2 + move $s2 $s4 + move $s4 $s5 + lw $s4 0($s5) + move $s7 $s0 + move $s0 $s7 + move $s7 $s2 + move $s2 $s7 + lw $s4 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s0 + move $a2 $s2 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s2 $s7 + move $s7 $s2 + beqz $s7 if477_else +if477_body: + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s2 0($s7) + lw $s7 0($s5) + move $s0 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s0 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s0 $s7 + move $s3 $s0 + move $s0 $s6 + move $s6 $s0 + lw $s0 0($s6) + lw $s7 0($s0) + li $s0 0 + move $s2 $s0 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s2 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s2 $s0 + move $s3 $s2 + j if477_end +if477_else: + move $s2 $s6 + move $s6 $s2 + lw $s2 0($s6) + lw $s0 0($s2) + lw $s2 0($s5) + move $s5 $s2 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s5 + jalr $s0 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s5 $s2 + move $s3 $s5 + move $s5 $s6 + move $s6 $s5 + lw $s5 0($s6) + lw $s2 0($s5) + li $s5 0 + move $s0 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s0 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s0 $s5 + move $s3 $s0 +if477_end: +if447_end: +if433_end: + li $s0 1 + move $s3 $s0 + move $s0 $s3 + move $v0 $s0 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_RemoveRight: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 144 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + sw $a0 -72($fp) + sw $a1 -68($fp) + move $s7 $a2 +while517_test: + move $s4 $s7 + move $s7 $s4 + lw $t0 -128($fp) + lw $t0 0($s7) + sw $t0 -128($fp) + lw $t0 -124($fp) + lw $t1 -128($fp) + lw $t0 0($t1) + sw $t1 -128($fp) + sw $t0 -124($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -124($fp) + lw $t1 -124($fp) + jalr $t1 + sw $t1 -124($fp) + sw $t0 -124($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -120($fp) + move $t0 $v0 + sw $t0 -120($fp) + lw $t0 -136($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -132($fp) + lw $t0 -132($fp) + beqz $t0 while517_end + sw $t0 -132($fp) +while517_body: + lw $t0 -96($fp) + move $t0 $s7 + sw $t0 -96($fp) + lw $t0 -96($fp) + move $s7 $t0 + sw $t0 -96($fp) + lw $t0 -108($fp) + lw $t0 0($s7) + sw $t0 -108($fp) + lw $t0 -104($fp) + lw $t1 -108($fp) + lw $t0 0($t1) + sw $t1 -108($fp) + sw $t0 -104($fp) + lw $t0 -92($fp) + move $t0 $s7 + sw $t0 -92($fp) + lw $t0 -92($fp) + move $s7 $t0 + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t0 0($s7) + sw $t0 -88($fp) + lw $t0 -88($fp) + lw $s6 0($t0) + sw $t0 -88($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -80($fp) + move $t0 $v0 + sw $t0 -80($fp) + lw $t0 -80($fp) + move $t3 $t0 + sw $t0 -80($fp) + move $s5 $t3 + move $t6 $s5 + lw $t7 0($t6) + lw $t4 0($t7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $t6 + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -84($fp) + move $t0 $v0 + sw $t0 -84($fp) + lw $t0 -84($fp) + move $t5 $t0 + sw $t0 -84($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $t5 + lw $t0 -104($fp) + lw $t1 -104($fp) + jalr $t1 + sw $t1 -104($fp) + sw $t0 -104($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -140($fp) + move $t0 $v0 + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s2 $t0 + sw $t0 -140($fp) + lw $t0 -144($fp) + move $t0 $s2 + sw $t0 -144($fp) + move $s3 $s7 + move $s0 $s3 + lw $t0 -68($fp) + move $t0 $s0 + sw $t0 -68($fp) + lw $t0 -116($fp) + move $t0 $s7 + sw $t0 -116($fp) + lw $t0 -116($fp) + move $s7 $t0 + sw $t0 -116($fp) + lw $t0 -112($fp) + lw $t0 0($s7) + sw $t0 -112($fp) + lw $t0 -76($fp) + lw $t1 -112($fp) + lw $t0 0($t1) + sw $t1 -112($fp) + sw $t0 -76($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -76($fp) + lw $t1 -76($fp) + jalr $t1 + sw $t1 -76($fp) + sw $t0 -76($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + lw $t0 -100($fp) + move $t0 $s1 + sw $t0 -100($fp) + lw $t0 -100($fp) + move $s7 $t0 + sw $t0 -100($fp) + j while517_test +while517_end: + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $s5 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $s5 0($t0) + sw $t0 -68($fp) + lw $s6 0($s5) + lw $t0 -72($fp) + lw $s5 0($t0) + sw $t0 -72($fp) + move $t3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $t3 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $t3 $s5 + lw $t0 -144($fp) + move $t0 $t3 + sw $t0 -144($fp) + lw $t0 -68($fp) + move $t3 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $t3 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $t3 0($t0) + sw $t0 -68($fp) + lw $s5 0($t3) + li $t3 0 + move $s6 $t3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $s6 $t3 + lw $t0 -144($fp) + move $t0 $s6 + sw $t0 -144($fp) + li $s6 1 + move $t3 $s6 + move $s6 $t3 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 144 + jr $ra +Tree_RemoveLeft: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 144 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + sw $a0 -72($fp) + sw $a1 -68($fp) + move $s7 $a2 +while564_test: + move $s4 $s7 + move $s7 $s4 + lw $t0 -128($fp) + lw $t0 0($s7) + sw $t0 -128($fp) + lw $t0 -124($fp) + lw $t1 -128($fp) + lw $t0 0($t1) + sw $t1 -128($fp) + sw $t0 -124($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -124($fp) + lw $t1 -124($fp) + jalr $t1 + sw $t1 -124($fp) + sw $t0 -124($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -120($fp) + move $t0 $v0 + sw $t0 -120($fp) + lw $t0 -136($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -136($fp) + lw $t0 -132($fp) + lw $t1 -136($fp) + move $t0 $t1 + sw $t1 -136($fp) + sw $t0 -132($fp) + lw $t0 -132($fp) + beqz $t0 while564_end + sw $t0 -132($fp) +while564_body: + lw $t0 -96($fp) + move $t0 $s7 + sw $t0 -96($fp) + lw $t0 -96($fp) + move $s7 $t0 + sw $t0 -96($fp) + lw $t0 -108($fp) + lw $t0 0($s7) + sw $t0 -108($fp) + lw $t0 -104($fp) + lw $t1 -108($fp) + lw $t0 0($t1) + sw $t1 -108($fp) + sw $t0 -104($fp) + lw $t0 -92($fp) + move $t0 $s7 + sw $t0 -92($fp) + lw $t0 -92($fp) + move $s7 $t0 + sw $t0 -92($fp) + lw $t0 -88($fp) + lw $t0 0($s7) + sw $t0 -88($fp) + lw $t0 -88($fp) + lw $s6 0($t0) + sw $t0 -88($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -80($fp) + move $t0 $v0 + sw $t0 -80($fp) + lw $t0 -80($fp) + move $t3 $t0 + sw $t0 -80($fp) + move $s5 $t3 + move $t6 $s5 + lw $t7 0($t6) + lw $t4 0($t7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $t6 + jalr $t4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -84($fp) + move $t0 $v0 + sw $t0 -84($fp) + lw $t0 -84($fp) + move $t5 $t0 + sw $t0 -84($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $t5 + lw $t0 -104($fp) + lw $t1 -104($fp) + jalr $t1 + sw $t1 -104($fp) + sw $t0 -104($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -140($fp) + move $t0 $v0 + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s2 $t0 + sw $t0 -140($fp) + lw $t0 -144($fp) + move $t0 $s2 + sw $t0 -144($fp) + move $s3 $s7 + move $s0 $s3 + lw $t0 -68($fp) + move $t0 $s0 + sw $t0 -68($fp) + lw $t0 -116($fp) + move $t0 $s7 + sw $t0 -116($fp) + lw $t0 -116($fp) + move $s7 $t0 + sw $t0 -116($fp) + lw $t0 -112($fp) + lw $t0 0($s7) + sw $t0 -112($fp) + lw $t0 -76($fp) + lw $t1 -112($fp) + lw $t0 0($t1) + sw $t1 -112($fp) + sw $t0 -76($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + lw $t0 -76($fp) + lw $t1 -76($fp) + jalr $t1 + sw $t1 -76($fp) + sw $t0 -76($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + lw $t0 -100($fp) + move $t0 $s1 + sw $t0 -100($fp) + lw $t0 -100($fp) + move $s7 $t0 + sw $t0 -100($fp) + j while564_test +while564_end: + lw $t0 -68($fp) + move $s5 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $s5 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $s5 0($t0) + sw $t0 -68($fp) + lw $s6 0($s5) + lw $t0 -72($fp) + lw $s5 0($t0) + sw $t0 -72($fp) + move $t3 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $t3 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $t3 $s5 + lw $t0 -144($fp) + move $t0 $t3 + sw $t0 -144($fp) + lw $t0 -68($fp) + move $t3 $t0 + sw $t0 -68($fp) + lw $t0 -68($fp) + move $t0 $t3 + sw $t0 -68($fp) + lw $t0 -68($fp) + lw $t3 0($t0) + sw $t0 -68($fp) + lw $s5 0($t3) + li $t3 0 + move $s6 $t3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + lw $t0 -68($fp) + move $a0 $t0 + sw $t0 -68($fp) + move $a1 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $t3 $v0 + move $s6 $t3 + lw $t0 -144($fp) + move $t0 $s6 + sw $t0 -144($fp) + li $s6 1 + move $t3 $s6 + move $s6 $t3 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 144 + jr $ra +Tree_Search: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 180 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s6 + move $s6 $s5 + move $s5 $s6 + li $s6 1 + move $s4 $s6 + move $s6 $s4 + li $s4 0 + move $s3 $s4 + lw $t0 -68($fp) + move $t0 $s3 + sw $t0 -68($fp) +while617_test: + move $s3 $s6 + lw $t0 -156($fp) + move $t0 $s3 + sw $t0 -156($fp) + lw $t0 -116($fp) + lw $t1 -156($fp) + move $t0 $t1 + sw $t1 -156($fp) + sw $t0 -116($fp) + lw $t0 -116($fp) + beqz $t0 while617_end + sw $t0 -116($fp) +while617_body: + lw $t0 -124($fp) + move $t0 $s5 + sw $t0 -124($fp) + lw $t0 -124($fp) + move $s5 $t0 + sw $t0 -124($fp) + lw $t0 -84($fp) + lw $t0 0($s5) + sw $t0 -84($fp) + lw $t0 -80($fp) + lw $t1 -84($fp) + lw $t0 0($t1) + sw $t1 -84($fp) + sw $t0 -80($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -80($fp) + lw $t1 -80($fp) + jalr $t1 + sw $t1 -80($fp) + sw $t0 -80($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -132($fp) + move $t0 $v0 + sw $t0 -132($fp) + lw $t0 -92($fp) + lw $t1 -132($fp) + move $t0 $t1 + sw $t1 -132($fp) + sw $t0 -92($fp) + lw $t0 -100($fp) + lw $t1 -92($fp) + move $t0 $t1 + sw $t1 -92($fp) + sw $t0 -100($fp) + move $t4 $s7 + lw $t0 -76($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -76($fp) + lw $t0 -180($fp) + lw $t1 -76($fp) + move $a0 $t4 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -76($fp) + sw $t0 -180($fp) + lw $t0 -72($fp) + lw $t1 -180($fp) + move $t0 $t1 + sw $t1 -180($fp) + sw $t0 -72($fp) + lw $t0 -72($fp) + move $t7 $t0 + sw $t0 -72($fp) + beqz $t7 if626_else +if626_body: + move $t5 $s5 + move $s5 $t5 + lw $t6 0($s5) + lw $t0 -172($fp) + lw $t0 0($t6) + sw $t0 -172($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -172($fp) + lw $t1 -172($fp) + jalr $t1 + sw $t1 -172($fp) + sw $t0 -172($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + lw $t0 -168($fp) + move $t0 $s0 + sw $t0 -168($fp) + lw $t0 -96($fp) + lw $t1 -168($fp) + move $t0 $t1 + sw $t1 -168($fp) + sw $t0 -96($fp) + lw $t0 -96($fp) + beqz $t0 if631_else + sw $t0 -96($fp) +if631_body: + lw $t0 -144($fp) + move $t0 $s5 + sw $t0 -144($fp) + lw $t0 -144($fp) + move $s5 $t0 + sw $t0 -144($fp) + lw $t0 -164($fp) + lw $t0 0($s5) + sw $t0 -164($fp) + lw $t0 -152($fp) + lw $t1 -164($fp) + lw $t0 0($t1) + sw $t1 -164($fp) + sw $t0 -152($fp) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + lw $t0 -152($fp) + lw $t1 -152($fp) + jalr $t1 + sw $t1 -152($fp) + sw $t0 -152($fp) + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + lw $t0 -148($fp) + move $t0 $v0 + sw $t0 -148($fp) + lw $t0 -112($fp) + lw $t1 -148($fp) + move $t0 $t1 + sw $t1 -148($fp) + sw $t0 -112($fp) + lw $t0 -112($fp) + move $s5 $t0 + sw $t0 -112($fp) + j if631_end +if631_else: + lw $t0 -104($fp) + li $t0 0 + sw $t0 -104($fp) + lw $t0 -136($fp) + lw $t1 -104($fp) + move $t0 $t1 + sw $t1 -104($fp) + sw $t0 -136($fp) + lw $t0 -136($fp) + move $s6 $t0 + sw $t0 -136($fp) +if631_end: + j if626_end +if626_else: + lw $t0 -88($fp) + lw $t1 -100($fp) + move $t0 $t1 + sw $t1 -100($fp) + sw $t0 -88($fp) + move $s1 $s7 + lw $t0 -128($fp) + lw $t1 -88($fp) + move $a0 $t1 + move $t9 $s1 + slt $t0 $a0 $t9 + sw $t1 -88($fp) + sw $t0 -128($fp) + lw $t0 -128($fp) + move $s2 $t0 + sw $t0 -128($fp) + lw $t0 -176($fp) + move $t0 $s2 + sw $t0 -176($fp) + lw $t0 -176($fp) + beqz $t0 if644_else + sw $t0 -176($fp) +if644_body: + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s5) + lw $t3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $t3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $t3 $s4 + move $s4 $t3 + beqz $s4 if649_else +if649_body: + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s5) + lw $t3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $t3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $t3 $s4 + move $s5 $t3 + j if649_end +if649_else: + li $t3 0 + move $s4 $t3 + move $s6 $s4 +if649_end: + j if644_end +if644_else: + lw $t0 -160($fp) + li $t0 1 + sw $t0 -160($fp) + lw $t0 -120($fp) + lw $t1 -160($fp) + move $t0 $t1 + sw $t1 -160($fp) + sw $t0 -120($fp) + lw $t0 -68($fp) + lw $t1 -120($fp) + move $t0 $t1 + sw $t1 -120($fp) + sw $t0 -68($fp) + lw $t0 -108($fp) + li $t0 0 + sw $t0 -108($fp) + lw $t0 -140($fp) + lw $t1 -108($fp) + move $t0 $t1 + sw $t1 -108($fp) + sw $t0 -140($fp) + lw $t0 -140($fp) + move $s6 $t0 + sw $t0 -140($fp) +if644_end: +if626_end: + j while617_test +while617_end: + lw $t0 -68($fp) + move $t4 $t0 + sw $t0 -68($fp) + move $t5 $t4 + move $t4 $t5 + move $v0 $t4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 180 + jr $ra +Tree_Print: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $s6 $s7 + move $s5 $s6 + move $s6 $s5 + move $s5 $s7 + lw $s5 0($s7) + move $s4 $s6 + move $s6 $s4 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s6 $s4 + move $s4 $s6 + li $s4 1 + move $s6 $s4 + move $s4 $s6 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_RecPrint: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + beqz $s5 if680_else +if680_body: + move $s5 $s6 + lw $s5 0($s6) + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s7) + lw $s3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s3 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + move $s4 $s3 + j if680_end +if680_else: + li $s3 1 + move $s5 $s3 + move $s4 $s5 +if680_end: + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + move $a0 $s5 + jal _print + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s3 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s3 $s5 + move $s5 $s3 + beqz $s5 if703_else +if703_body: + move $s5 $s6 + lw $s5 0($s6) + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + lw $s5 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s2 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s4 $s2 + j if703_end +if703_else: + li $s2 1 + move $s3 $s2 + move $s4 $s3 +if703_end: + li $s3 1 + move $s4 $s3 + move $s3 $s4 + move $v0 $s3 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Tree_accept: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + li $s7 333 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s4 0($s7) + move $s7 $s5 + move $s5 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + li $s7 0 + move $s5 $s7 + move $s7 $s5 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Visitor_visit: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + beqz $s5 if736_else +if736_body: + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + sw $s4 0($s6) + lw $s4 0($s6) + move $s5 $s4 + lw $s4 0($s5) + lw $s3 0($s4) + move $s4 $s6 + move $s2 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s2 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s2 $s4 + move $s4 $s2 + j if736_end +if736_else: + li $s2 0 + move $s3 $s2 + move $s4 $s3 +if736_end: + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s3 $s2 + beqz $s3 if756_else +if756_body: + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + sw $s2 0($s6) + lw $s2 0($s6) + move $s3 $s2 + lw $s2 0($s3) + lw $s7 0($s2) + move $s2 $s6 + move $s6 $s2 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s3 + move $a1 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s6 $s2 + move $s4 $s6 + j if756_end +if756_else: + li $s6 0 + move $s2 $s6 + move $s4 $s2 +if756_end: + li $s2 0 + move $s4 $s2 + move $s2 $s4 + move $v0 $s2 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +MyVisitor_visit: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + beqz $s5 if779_else +if779_body: + move $s5 $s7 + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + sw $s4 0($s6) + lw $s4 0($s6) + move $s5 $s4 + lw $s4 0($s5) + lw $s3 0($s4) + move $s4 $s6 + move $s2 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + move $a1 $s2 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s2 $s4 + move $s4 $s2 + j if779_end +if779_else: + li $s2 0 + move $s3 $s2 + move $s4 $s3 +if779_end: + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s3 $s2 + move $a0 $s3 + jal _print + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s3 $s2 + beqz $s3 if805_else +if805_body: + move $s3 $s7 + move $s7 $s3 + lw $s3 0($s7) + lw $s2 0($s3) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + sw $s2 0($s6) + lw $s2 0($s6) + move $s3 $s2 + lw $s2 0($s3) + lw $s7 0($s2) + move $s2 $s6 + move $s6 $s2 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s3 + move $a1 $s6 + jalr $s7 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s2 $v0 + move $s6 $s2 + move $s4 $s6 + j if805_end +if805_else: + li $s6 0 + move $s2 $s6 + move $s4 $s2 +if805_end: + li $s2 0 + move $s4 $s2 + move $s2 $s4 + move $v0 $s2 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/TreeVisitor.vaporm b/output/TreeVisitor.vaporm index df4e39f..65d494d 100644 --- a/output/TreeVisitor.vaporm +++ b/output/TreeVisitor.vaporm @@ -39,15 +39,16 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_TV $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s7 call $s5 $t3 = local[8] $t4 = local[9] @@ -55,9 +56,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s5 = $s7 - PrintIntS($s5 ) + $s6 = $v0 + $s5 = $s6 + $s6 = $s5 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -80,10 +82,14 @@ func TV_Start [in 0, out 0, local 14] $s6 = HeapAllocZ(108 ) [$s6+0] = :functable_Tree $s7 = $s6 - $s7 = $s7 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 $s6 = [$s7+0] $s5 = [$s6+0] $s6 = 16 + $s4 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -91,7 +97,7 @@ 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] @@ -99,9 +105,11 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s6 = $v0 + $s4 = $s6 $s6 = $s4 - $s7 = $s7 + $s4 = $s7 + $s7 = $s4 $s4 = [$s7+0] $s5 = [$s4+72] local[8] = $t3 @@ -119,13 +127,18 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s6 = $s4 - $s4 = 100000000 - PrintIntS($s4 ) - $s7 = $s7 - $s4 = [$s7+0] - $s5 = [$s4+48] - $s4 = 8 + $s5 = $s4 + $s6 = $s5 + $s5 = 100000000 + $s4 = $s5 + $s5 = $s4 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+48] + $s5 = 8 + $s3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -133,20 +146,23 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s4 - call $s5 + $a1 = $s3 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 + $s5 = $v0 + $s3 = $s5 $s6 = $s3 - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] - $s4 = [$s3+48] + $s5 = [$s3+48] $s3 = 24 + $s4 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -154,20 +170,23 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 - call $s4 + $a1 = $s4 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s6 = $s5 - $s7 = $s7 - $s5 = [$s7+0] - $s3 = [$s5+48] - $s5 = 4 + $s3 = $v0 + $s4 = $s3 + $s6 = $s4 + $s4 = $s7 + $s7 = $s4 + $s4 = [$s7+0] + $s3 = [$s4+48] + $s4 = 4 + $s5 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -184,11 +203,14 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s6 = $s4 - $s7 = $s7 - $s4 = [$s7+0] - $s5 = [$s4+48] - $s4 = 12 + $s5 = $s4 + $s6 = $s5 + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+48] + $s5 = 12 + $s3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -196,20 +218,23 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s4 - call $s5 + $a1 = $s3 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 + $s5 = $v0 + $s3 = $s5 $s6 = $s3 - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] - $s4 = [$s3+48] + $s5 = [$s3+48] $s3 = 20 + $s4 = $s3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -217,20 +242,23 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 - call $s4 + $a1 = $s4 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s6 = $s5 - $s7 = $s7 - $s5 = [$s7+0] - $s3 = [$s5+48] - $s5 = 28 + $s3 = $v0 + $s4 = $s3 + $s6 = $s4 + $s4 = $s7 + $s7 = $s4 + $s4 = [$s7+0] + $s3 = [$s4+48] + $s4 = 28 + $s5 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -247,11 +275,14 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s4 = $v0 - $s6 = $s4 - $s7 = $s7 - $s4 = [$s7+0] - $s5 = [$s4+48] - $s4 = 14 + $s5 = $s4 + $s6 = $s5 + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+48] + $s5 = 14 + $s3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -259,19 +290,21 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s4 - call $s5 + $a1 = $s3 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 + $s5 = $v0 + $s3 = $s5 $s6 = $s3 - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] - $s4 = [$s3+72] + $s5 = [$s3+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -279,7 +312,7 @@ 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] @@ -287,18 +320,27 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s3 = $v0 - $s6 = $s3 - $s3 = 100000000 - PrintIntS($s3 ) - $s3 = HeapAllocZ(16 ) - [$s3+0] = :functable_MyVisitor - $s4 = $s3 - $s3 = 50000000 - PrintIntS($s3 ) - $s7 = $s7 - $s3 = [$s7+0] - $s5 = [$s3+80] - $s3 = $s4 + $s5 = $s3 + $s6 = $s5 + $s5 = 100000000 + $s3 = $s5 + $s5 = $s3 + PrintIntS($s5 ) + $s5 = HeapAllocZ(16 ) + [$s5+0] = :functable_MyVisitor + $s3 = $s5 + $s5 = $s3 + $s3 = $s5 + $s5 = 50000000 + $s4 = $s5 + $s5 = $s4 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+80] + $s5 = $s3 + $s3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -307,21 +349,26 @@ func TV_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s3 - call $s5 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - $s3 = 100000000 - PrintIntS($s3 ) - $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+68] - $s3 = 24 + $s5 = $v0 + $s3 = $s5 + $s5 = $s3 + $s5 = 100000000 + $s3 = $s5 + $s5 = $s3 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s3 = [$s5+68] + $s5 = 24 + $s4 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -329,8 +376,8 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 - call $s4 + $a1 = $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -338,12 +385,15 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s5 = $v0 + $s4 = $s5 + $s5 = $s4 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+68] + $s5 = 12 $s3 = $s5 - PrintIntS($s3 ) - $s7 = $s7 - $s3 = [$s7+0] - $s5 = [$s3+68] - $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -352,20 +402,23 @@ func TV_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s3 - call $s5 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - PrintIntS($s3 ) - $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+68] - $s3 = 16 + $s5 = $v0 + $s3 = $s5 + $s5 = $s3 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s3 = [$s5+68] + $s5 = 16 + $s4 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -373,8 +426,8 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 - call $s4 + $a1 = $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -382,12 +435,15 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s5 = $v0 + $s4 = $s5 + $s5 = $s4 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+68] + $s5 = 50 $s3 = $s5 - PrintIntS($s3 ) - $s7 = $s7 - $s3 = [$s7+0] - $s5 = [$s3+68] - $s3 = 50 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -396,20 +452,23 @@ func TV_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s3 - call $s5 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - PrintIntS($s3 ) - $s7 = $s7 - $s3 = [$s7+0] - $s4 = [$s3+68] - $s3 = 12 + $s5 = $v0 + $s3 = $s5 + $s5 = $s3 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s3 = [$s5+68] + $s5 = 12 + $s4 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -417,8 +476,8 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s3 - call $s4 + $a1 = $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -426,12 +485,15 @@ func TV_Start [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s5 = $v0 + $s4 = $s5 + $s5 = $s4 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+52] + $s5 = 12 $s3 = $s5 - PrintIntS($s3 ) - $s7 = $s7 - $s3 = [$s7+0] - $s5 = [$s3+52] - $s3 = 12 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -440,18 +502,20 @@ func TV_Start [in 0, out 0, local 14] local[13] = $t8 $a0 = $s7 $a1 = $s3 - call $s5 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s6 = $s4 - $s7 = $s7 - $s4 = [$s7+0] - $s3 = [$s4+72] + $s5 = $v0 + $s3 = $s5 + $s6 = $s3 + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s5 = [$s3+72] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -459,19 +523,22 @@ func TV_Start [in 0, out 0, local 14] 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] - $s4 = $v0 - $s6 = $s4 - $s7 = $s7 - $s4 = [$s7+0] - $s6 = [$s4+68] - $s4 = 12 + $s3 = $v0 + $s5 = $s3 + $s6 = $s5 + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s6 = [$s5+68] + $s5 = 12 + $s3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -479,7 +546,7 @@ func TV_Start [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $s4 + $a1 = $s3 call $s6 $t3 = local[8] $t4 = local[9] @@ -487,11 +554,14 @@ func TV_Start [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s4 = $s3 - PrintIntS($s4 ) - $s4 = 0 - $v0 = $s4 + $s5 = $v0 + $s3 = $s5 + $s5 = $s3 + PrintIntS($s5 ) + $s5 = 0 + $s3 = $s5 + $s5 = $s3 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -510,12 +580,20 @@ func Tree_Init [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+92] = $s7 - [$s6+96] = 0 - [$s6+100] = 0 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+92] = $s6 + $s6 = 0 + $s7 = $s6 + [$s5+96] = $s7 + $s7 = 0 + $s6 = $s7 + [$s5+100] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -535,10 +613,14 @@ func Tree_SetRight [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+88] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+88] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -558,10 +640,14 @@ func Tree_SetLeft [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+84] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+84] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -583,6 +669,8 @@ func Tree_GetRight [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+88] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -604,6 +692,8 @@ func Tree_GetLeft [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+84] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -625,6 +715,8 @@ func Tree_GetKey [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+92] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -644,10 +736,14 @@ func Tree_SetKey [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+92] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+92] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -669,6 +765,8 @@ func Tree_GetHas_Right [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+100] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -690,6 +788,8 @@ func Tree_GetHas_Left [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+96] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -709,10 +809,14 @@ func Tree_SetHas_Left [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+96] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+96] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -732,10 +836,14 @@ func Tree_SetHas_Right [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+100] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+100] = $s6 $s6 = 1 + $s5 = $s6 + $s6 = $s5 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -759,34 +867,51 @@ func Tree_Compare [in 0, out 0, local 14] $s6 = $a1 $s7 = $a2 $s4 = 0 + $s5 = $s4 + $s4 = $s5 $s5 = $s7 $s3 = 1 $s2 = Add($s5 $s3 ) $s3 = $s2 - $s2 = $s6 + $s2 = $s3 + $s3 = $s6 $s5 = $s7 - $s7 = LtS($s2 $s5 ) + $s7 = LtS($s3 $s5 ) $s5 = $s7 - if0 $s5 goto :if105_else -if105_body: - $s4 = 0 - goto :if105_end -if105_else: + $s7 = $s5 + if0 $s7 goto :if216_else +if216_body: + $s7 = 0 + $s5 = $s7 + $s4 = $s5 + goto :if216_end +if216_else: $s5 = $s6 - $s6 = $s3 - $s3 = LtS($s5 $s6 ) - $s6 = Eq($s3 0 ) - $s3 = $s6 - if0 $s3 goto :if109_else -if109_body: - $s4 = 0 - goto :if109_end -if109_else: - $s4 = 1 -if109_end: -if105_end: - $s3 = $s4 - $v0 = $s3 + $s6 = $s2 + $s2 = LtS($s5 $s6 ) + $s6 = $s2 + $s2 = $s6 + $s6 = $s2 + $s2 = Eq($s6 0 ) + $s6 = $s2 + $s2 = $s6 + $s6 = $s2 + if0 $s6 goto :if223_else +if223_body: + $s6 = 0 + $s2 = $s6 + $s4 = $s2 + goto :if223_end +if223_else: + $s2 = 1 + $s6 = $s2 + $s4 = $s6 +if223_end: +if216_end: + $s6 = $s4 + $s4 = $s6 + $s6 = $s4 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -796,7 +921,7 @@ if105_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Insert [in 0, out 0, local 44] +func Tree_Insert [in 0, out 0, local 71] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -810,10 +935,14 @@ func Tree_Insert [in 0, out 0, local 44] $s5 = HeapAllocZ(108 ) [$s5+0] = :functable_Tree $s4 = $s5 - $s4 = $s4 + $s5 = $s4 + $s4 = $s5 + $s5 = $s4 + $s4 = $s5 $s5 = [$s4+0] $s3 = [$s5+0] $s5 = $s7 + $s2 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -821,7 +950,7 @@ func Tree_Insert [in 0, out 0, local 44] local[12] = $t7 local[13] = $t8 $a0 = $s4 - $a1 = $s5 + $a1 = $s2 call $s3 $t3 = local[8] $t4 = local[9] @@ -829,23 +958,43 @@ func Tree_Insert [in 0, out 0, local 44] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 + $s5 = $v0 + $s2 = $s5 $s5 = $s2 $s2 = $s6 + $s6 = $s2 + $s2 = $s6 $s6 = 1 -while120_test: $s3 = $s6 - if0 $s3 goto :while120_end -while120_body: - $s2 = $s2 - $t0 = local[27] + $s6 = $s3 +while254_test: + $s3 = $s6 + $t0 = local[53] + $t0 = $s3 + local[53] = $t0 + $t0 = local[57] + $t1 = local[53] + $t0 = $t1 + local[53] = $t1 + local[57] = $t0 + $t0 = local[57] + if0 $t0 goto :while254_end + local[57] = $t0 +while254_body: + $t0 = local[49] + $t0 = $s2 + local[49] = $t0 + $t0 = local[49] + $s2 = $t0 + local[49] = $t0 + $t0 = local[52] $t0 = [$s2+0] - local[27] = $t0 - $t0 = local[33] - $t1 = local[27] + local[52] = $t0 + $t0 = local[51] + $t1 = local[52] $t0 = [$t1+20] - local[27] = $t1 - local[33] = $t0 + local[52] = $t1 + local[51] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -853,58 +1002,73 @@ while120_body: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[33] - $t1 = local[33] + $t0 = local[51] + $t1 = local[51] call $t1 - local[33] = $t1 - local[33] = $t0 + local[51] = $t1 + local[51] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[29] + $t0 = local[50] $t0 = $v0 - local[29] = $t0 + local[50] = $t0 + $t0 = local[44] + $t1 = local[50] + $t0 = $t1 + local[50] = $t1 + local[44] = $t0 + $t0 = local[56] + $t1 = local[44] + $t0 = $t1 + local[44] = $t1 + local[56] = $t0 + $t0 = local[27] + $t0 = $s7 + local[27] = $t0 $t0 = local[37] - $t1 = local[29] + $t1 = local[56] $t0 = $t1 - local[29] = $t1 + local[56] = $t1 local[37] = $t0 - $t0 = local[24] - $t0 = $s7 - local[24] = $t0 - $t0 = local[23] - $t1 = local[37] + $t0 = local[43] + $t1 = local[27] + $t2 = local[37] + $t0 = LtS($t1 $t2 ) + local[37] = $t2 + local[27] = $t1 + local[43] = $t0 + $t0 = local[35] + $t1 = local[43] $t0 = $t1 - local[37] = $t1 - local[23] = $t0 + local[43] = $t1 + local[35] = $t0 + $t0 = local[41] + $t1 = local[35] + $t0 = $t1 + local[35] = $t1 + local[41] = $t0 + $t0 = local[41] + if0 $t0 goto :if263_else + local[41] = $t0 +if263_body: $t0 = local[31] - $t1 = local[24] - $t2 = local[23] - $t0 = LtS($t1 $t2 ) - local[23] = $t2 - local[24] = $t1 + $t0 = $s2 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: - $s2 = $s2 - $t0 = local[15] + $t0 = local[31] + $s2 = $t0 + local[31] = $t0 + $t0 = local[30] $t0 = [$s2+0] - local[15] = $t0 - $t0 = local[21] - $t1 = local[15] + local[30] = $t0 + $t0 = local[34] + $t1 = local[30] $t0 = [$t1+32] - local[15] = $t1 - local[21] = $t0 + local[30] = $t1 + local[34] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -912,34 +1076,44 @@ if125_body: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[21] - $t1 = local[21] + $t0 = local[34] + $t1 = local[34] call $t1 - local[21] = $t1 - local[21] = $t0 + local[34] = $t1 + local[34] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[17] + $t0 = local[39] $t0 = $v0 - local[17] = $t0 - $t0 = local[19] - $t1 = local[17] + local[39] = $t0 + $t0 = local[33] + $t1 = local[39] $t0 = $t1 - local[17] = $t1 - local[19] = $t0 + local[39] = $t1 + local[33] = $t0 + $t0 = local[25] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[25] = $t0 + $t0 = local[25] + if0 $t0 goto :if268_else + local[25] = $t0 +if268_body: + $t7 = $s2 + $s2 = $t7 + $t0 = local[21] + $t0 = [$s2+0] + local[21] = $t0 $t0 = local[19] - if0 $t0 goto :if129_else + $t1 = local[21] + $t0 = [$t1+16] + local[21] = $t1 local[19] = $t0 -if129_body: - $s2 = $s2 - $s1 = [$s2+0] - $t0 = local[42] - $t0 = [$s1+16] - local[42] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -947,34 +1121,59 @@ if129_body: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[42] - $t1 = local[42] + $t0 = local[19] + $t1 = local[19] call $t1 - local[42] = $t1 - local[42] = $t0 + local[19] = $t1 + local[19] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t7 = $v0 - $s2 = $t7 - goto :if129_end -if129_else: - $s6 = 0 - $s2 = $s2 - $t0 = local[41] + $t5 = $v0 + $t0 = local[24] + $t0 = $t5 + local[24] = $t0 + $t0 = local[24] + $s2 = $t0 + local[24] = $t0 + goto :if268_end +if268_else: + $t0 = local[23] + $t0 = 0 + local[23] = $t0 + $t0 = local[16] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[16] = $t0 + $t0 = local[16] + $s6 = $t0 + local[16] = $t0 + $t0 = local[18] + $t0 = $s2 + local[18] = $t0 + $t0 = local[18] + $s2 = $t0 + local[18] = $t0 + $t0 = local[17] $t0 = [$s2+0] - local[41] = $t0 - $t0 = local[40] - $t1 = local[41] + local[17] = $t0 + $t0 = local[59] + $t1 = local[17] $t0 = [$t1+36] - local[41] = $t1 - local[40] = $t0 - $t0 = local[26] + local[17] = $t1 + local[59] = $t0 + $t0 = local[61] $t0 = 1 - local[26] = $t0 + local[61] = $t0 + $t0 = local[60] + $t1 = local[61] + $t0 = $t1 + local[61] = $t1 + local[60] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -982,34 +1181,53 @@ if129_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[26] + $t0 = local[60] $a1 = $t0 - local[26] = $t0 - $t0 = local[40] - $t1 = local[40] + local[60] = $t0 + $t0 = local[59] + $t1 = local[59] call $t1 - local[40] = $t1 - local[40] = $t0 + local[59] = $t1 + local[59] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s5 = $t5 - $s2 = $s2 - $t0 = local[35] + $t0 = local[15] + $t0 = $v0 + local[15] = $t0 + $t0 = local[66] + $t1 = local[15] + $t0 = $t1 + local[15] = $t1 + local[66] = $t0 + $t0 = local[66] + $s5 = $t0 + local[66] = $t0 + $t0 = local[68] + $t0 = $s2 + local[68] = $t0 + $t0 = local[68] + $s2 = $t0 + local[68] = $t0 + $t0 = local[67] $t0 = [$s2+0] - local[35] = $t0 - $t0 = local[39] - $t1 = local[35] + local[67] = $t0 + $t0 = local[63] + $t1 = local[67] $t0 = [$t1+8] - local[35] = $t1 - local[39] = $t0 - $t0 = local[38] + local[67] = $t1 + local[63] = $t0 + $t0 = local[62] $t0 = $s4 - local[38] = $t0 + local[62] = $t0 + $t0 = local[64] + $t1 = local[62] + $t0 = $t1 + local[62] = $t1 + local[64] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1017,38 +1235,48 @@ if129_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[38] + $t0 = local[64] $a1 = $t0 - local[38] = $t0 - $t0 = local[39] - $t1 = local[39] + local[64] = $t0 + $t0 = local[63] + $t1 = local[63] call $t1 - local[39] = $t1 - local[39] = $t0 + local[63] = $t1 + local[63] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[36] + $t0 = local[65] $t0 = $v0 - local[36] = $t0 - $t0 = local[36] + local[65] = $t0 + $t0 = local[46] + $t1 = local[65] + $t0 = $t1 + local[65] = $t1 + local[46] = $t0 + $t0 = local[46] $s5 = $t0 - local[36] = $t0 -if129_end: - goto :if125_end -if125_else: - $s2 = $s2 - $t0 = local[28] + local[46] = $t0 +if268_end: + goto :if263_end +if263_else: + $t0 = local[48] + $t0 = $s2 + local[48] = $t0 + $t0 = local[48] + $s2 = $t0 + local[48] = $t0 + $t0 = local[47] $t0 = [$s2+0] - local[28] = $t0 - $t0 = local[34] - $t1 = local[28] + local[47] = $t0 + $t0 = local[55] + $t1 = local[47] $t0 = [$t1+28] - local[28] = $t1 - local[34] = $t0 + local[47] = $t1 + local[55] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1056,30 +1284,36 @@ if125_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[34] - $t1 = local[34] + $t0 = local[55] + $t1 = local[55] call $t1 - local[34] = $t1 - local[34] = $t0 + local[55] = $t1 + local[55] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[30] + $t0 = local[45] $t0 = $v0 - local[30] = $t0 - $t0 = local[32] - $t1 = local[30] + local[45] = $t0 + $t0 = local[54] + $t1 = local[45] $t0 = $t1 - local[30] = $t1 - local[32] = $t0 - $t0 = local[32] - if0 $t0 goto :if144_else - local[32] = $t0 -if144_body: - $s2 = $s2 + local[45] = $t1 + local[54] = $t0 + $t0 = local[58] + $t1 = local[54] + $t0 = $t1 + local[54] = $t1 + local[58] = $t0 + $t0 = local[58] + if0 $t0 goto :if295_else + local[58] = $t0 +if295_body: + $t3 = $s2 + $s2 = $t3 $t3 = [$s2+0] $t4 = [$t3+12] local[8] = $t3 @@ -1097,22 +1331,43 @@ if144_body: $t7 = local[12] $t8 = local[13] $t3 = $v0 - $s2 = $t3 - goto :if144_end -if144_else: - $s6 = 0 - $s2 = $s2 - $t0 = local[16] + $t4 = $t3 + $s2 = $t4 + goto :if295_end +if295_else: + $t0 = local[26] + $t0 = 0 + local[26] = $t0 + $t0 = local[29] + $t1 = local[26] + $t0 = $t1 + local[26] = $t1 + local[29] = $t0 + $t0 = local[29] + $s6 = $t0 + local[29] = $t0 + $t0 = local[38] + $t0 = $s2 + local[38] = $t0 + $t0 = local[38] + $s2 = $t0 + local[38] = $t0 + $t0 = local[36] $t0 = [$s2+0] - local[16] = $t0 - $t0 = local[22] - $t1 = local[16] + local[36] = $t0 + $t0 = local[42] + $t1 = local[36] $t0 = [$t1+40] - local[16] = $t1 - local[22] = $t0 - $t0 = local[20] + local[36] = $t1 + local[42] = $t0 + $t0 = local[40] $t0 = 1 - local[20] = $t0 + local[40] = $t0 + $t0 = local[32] + $t1 = local[40] + $t0 = $t1 + local[40] = $t1 + local[32] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1120,34 +1375,41 @@ if144_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[20] + $t0 = local[32] $a1 = $t0 - local[20] = $t0 - $t0 = local[22] - $t1 = local[22] + local[32] = $t0 + $t0 = local[42] + $t1 = local[42] call $t1 - local[22] = $t1 - local[22] = $t0 + local[42] = $t1 + local[42] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[18] + $t0 = local[28] $t0 = $v0 - local[18] = $t0 - $t0 = local[18] - $s5 = $t0 - local[18] = $t0 - $s2 = $s2 - $s0 = [$s2+0] + local[28] = $t0 $t0 = local[14] - $t0 = [$s0+4] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 local[14] = $t0 - $t0 = local[43] - $t0 = $s4 - local[43] = $t0 + $t0 = local[14] + $s5 = $t0 + local[14] = $t0 + $s0 = $s2 + $s2 = $s0 + $s1 = [$s2+0] + $t0 = local[70] + $t0 = [$s1+4] + local[70] = $t0 + $t6 = $s4 + $t0 = local[22] + $t0 = $t6 + local[22] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1155,27 +1417,38 @@ if144_else: local[12] = $t7 local[13] = $t8 $a0 = $s2 - $t0 = local[43] + $t0 = local[22] $a1 = $t0 - local[43] = $t0 - $t0 = local[14] - $t1 = local[14] + local[22] = $t0 + $t0 = local[70] + $t1 = local[70] call $t1 - local[14] = $t1 - local[14] = $t0 + local[70] = $t1 + local[70] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t6 = $v0 - $s5 = $t6 -if144_end: -if125_end: - goto :while120_test -while120_end: + $t0 = local[69] + $t0 = $v0 + local[69] = $t0 + $t0 = local[20] + $t1 = local[69] + $t0 = $t1 + local[69] = $t1 + local[20] = $t0 + $t0 = local[20] + $s5 = $t0 + local[20] = $t0 +if295_end: +if263_end: + goto :while254_test +while254_end: $t5 = 1 + $t6 = $t5 + $t5 = $t6 $v0 = $t5 $s0 = local[0] $s1 = local[1] @@ -1186,7 +1459,7 @@ while120_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Delete [in 0, out 0, local 54] +func Tree_Delete [in 0, out 0, local 91] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1198,25 +1471,50 @@ func Tree_Delete [in 0, out 0, local 54] $s6 = $a0 $s7 = $a1 $s5 = $s6 + $s4 = $s5 + $s5 = $s4 $s4 = $s6 + $s3 = $s4 + $s4 = $s3 $s3 = 1 + $s2 = $s3 + $s3 = $s2 + $s2 = 0 + $s1 = $s2 $t0 = local[14] - $t0 = 0 + $t0 = $s1 local[14] = $t0 $s1 = 1 -while160_test: + $s0 = $s1 + $s1 = $s0 +while335_test: $s0 = $s3 - if0 $s0 goto :while160_end -while160_body: - $s5 = $s5 - $t0 = local[45] + $t0 = local[73] + $t0 = $s0 + local[73] = $t0 + $t0 = local[74] + $t1 = local[73] + $t0 = $t1 + local[73] = $t1 + local[74] = $t0 + $t0 = local[74] + if0 $t0 goto :while335_end + local[74] = $t0 +while335_body: + $t0 = local[72] + $t0 = $s5 + local[72] = $t0 + $t0 = local[72] + $s5 = $t0 + local[72] = $t0 + $t0 = local[71] $t0 = [$s5+0] - local[45] = $t0 - $t0 = local[50] - $t1 = local[45] + local[71] = $t0 + $t0 = local[66] + $t1 = local[71] $t0 = [$t1+20] - local[45] = $t1 - local[50] = $t0 + local[71] = $t1 + local[66] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1224,58 +1522,73 @@ while160_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[50] - $t1 = local[50] + $t0 = local[66] + $t1 = local[66] call $t1 - local[50] = $t1 - local[50] = $t0 + local[66] = $t1 + local[66] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[25] + $t0 = local[69] $t0 = $v0 - local[25] = $t0 - $t0 = local[26] - $t1 = local[25] + local[69] = $t0 + $t0 = local[65] + $t1 = local[69] $t0 = $t1 - local[25] = $t1 - local[26] = $t0 - $t0 = local[41] + local[69] = $t1 + local[65] = $t0 + $t0 = local[70] + $t1 = local[65] + $t0 = $t1 + local[65] = $t1 + local[70] = $t0 + $t0 = local[67] $t0 = $s7 - local[41] = $t0 - $t0 = local[40] - $t1 = local[26] + local[67] = $t0 + $t0 = local[39] + $t1 = local[70] $t0 = $t1 - local[26] = $t1 - local[40] = $t0 - $t0 = local[48] - $t1 = local[41] - $t2 = local[40] + local[70] = $t1 + local[39] = $t0 + $t0 = local[68] + $t1 = local[67] + $t2 = local[39] $t0 = LtS($t1 $t2 ) - local[40] = $t2 - local[41] = $t1 - local[48] = $t0 - $t0 = local[44] - $t1 = local[48] + local[39] = $t2 + local[67] = $t1 + local[68] = $t0 + $t0 = local[38] + $t1 = local[68] $t0 = $t1 - local[48] = $t1 - local[44] = $t0 - $t0 = local[44] - if0 $t0 goto :if165_else - local[44] = $t0 -if165_body: - $s5 = $s5 - $t0 = local[35] - $t0 = [$s5+0] - local[35] = $t0 + local[68] = $t1 + local[38] = $t0 + $t0 = local[29] + $t1 = local[38] + $t0 = $t1 + local[38] = $t1 + local[29] = $t0 + $t0 = local[29] + if0 $t0 goto :if344_else + local[29] = $t0 +if344_body: $t0 = local[34] - $t1 = local[35] - $t0 = [$t1+32] - local[35] = $t1 + $t0 = $s5 local[34] = $t0 + $t0 = local[34] + $s5 = $t0 + local[34] = $t0 + $t0 = local[37] + $t0 = [$s5+0] + local[37] = $t0 + $t0 = local[36] + $t1 = local[37] + $t0 = [$t1+32] + local[37] = $t1 + local[36] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1283,39 +1596,55 @@ if165_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[34] - $t1 = local[34] + $t0 = local[36] + $t1 = local[36] call $t1 - local[34] = $t1 - local[34] = $t0 + local[36] = $t1 + local[36] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[43] + $t0 = local[35] $t0 = $v0 - local[43] = $t0 - $t0 = local[36] - $t1 = local[43] + local[35] = $t0 + $t0 = local[31] + $t1 = local[35] $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 + local[35] = $t1 + local[31] = $t0 $t0 = local[30] - $t0 = [$s5+0] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 local[30] = $t0 + $t0 = local[30] + if0 $t0 goto :if349_else + local[30] = $t0 +if349_body: $t0 = local[33] - $t1 = local[30] - $t0 = [$t1+16] - local[30] = $t1 + $t0 = $s5 local[33] = $t0 + $t0 = local[32] + $t1 = local[33] + $t0 = $t1 + local[33] = $t1 + local[32] = $t0 + $t0 = local[32] + $s4 = $t0 + local[32] = $t0 + $t0 = local[90] + $t0 = $s5 + local[90] = $t0 + $t0 = local[90] + $s5 = $t0 + local[90] = $t0 + $t5 = [$s5+0] + $t0 = local[24] + $t0 = [$t5+16] + local[24] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1323,54 +1652,75 @@ if169_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[33] - $t1 = local[33] + $t0 = local[24] + $t1 = local[24] call $t1 - local[33] = $t1 - local[33] = $t0 + local[24] = $t1 + local[24] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[31] + $t0 = local[28] $t0 = $v0 - local[31] = $t0 - $t0 = local[31] + local[28] = $t0 + $t0 = local[23] + $t1 = local[28] + $t0 = $t1 + local[28] = $t1 + local[23] = $t0 + $t0 = local[23] $s5 = $t0 - local[31] = $t0 - goto :if169_end -if169_else: - $s3 = 0 -if169_end: - goto :if165_end -if165_else: - $t0 = local[28] + local[23] = $t0 + goto :if349_end +if349_else: + $t0 = local[26] + $t0 = 0 + local[26] = $t0 + $t0 = local[25] $t1 = local[26] $t0 = $t1 local[26] = $t1 - local[28] = $t0 - $t0 = local[27] + local[25] = $t0 + $t0 = local[25] + $s3 = $t0 + local[25] = $t0 +if349_end: + goto :if344_end +if344_else: + $t0 = local[19] + $t1 = local[70] + $t0 = $t1 + local[70] = $t1 + local[19] = $t0 + $t0 = local[22] $t0 = $s7 - local[27] = $t0 - $t0 = local[32] - $t1 = local[28] - $t2 = local[27] + local[22] = $t0 + $t0 = local[20] + $t1 = local[19] + $t2 = local[22] $t0 = LtS($t1 $t2 ) - local[27] = $t2 - local[28] = $t1 - local[32] = $t0 - $t0 = local[29] - $t1 = local[32] + local[22] = $t2 + local[19] = $t1 + local[20] = $t0 + $t0 = local[21] + $t1 = local[20] $t0 = $t1 - local[32] = $t1 - local[29] = $t0 - $t0 = local[29] - if0 $t0 goto :if176_else - local[29] = $t0 -if176_body: - $s5 = $s5 + local[20] = $t1 + local[21] = $t0 + $t0 = local[44] + $t1 = local[21] + $t0 = $t1 + local[21] = $t1 + local[44] = $t0 + $t0 = local[44] + if0 $t0 goto :if364_else + local[44] = $t0 +if364_body: + $s2 = $s5 + $s5 = $s2 $s2 = [$s5+0] $t3 = [$s2+28] local[8] = $t3 @@ -1389,10 +1739,14 @@ if176_body: $t8 = local[13] $s2 = $v0 $t3 = $s2 - if0 $t3 goto :if180_else -if180_body: - $s4 = $s5 - $s5 = $s5 + $s2 = $t3 + if0 $s2 goto :if369_else +if369_body: + $s2 = $s5 + $t3 = $s2 + $s4 = $t3 + $t3 = $s5 + $s5 = $t3 $t3 = [$s5+0] $s2 = [$t3+12] local[8] = $t3 @@ -1410,29 +1764,47 @@ if180_body: $t7 = local[12] $t8 = local[13] $t3 = $v0 - $s5 = $t3 - goto :if180_end -if180_else: - $s3 = 0 -if180_end: - goto :if176_end -if176_else: - $t0 = local[24] + $s2 = $t3 + $s5 = $s2 + goto :if369_end +if369_else: + $s2 = 0 + $t3 = $s2 + $s3 = $t3 +if369_end: + goto :if364_end +if364_else: + $t0 = local[43] $t0 = $s1 - local[24] = $t0 - $t0 = local[24] - if0 $t0 goto :if187_else - local[24] = $t0 -if187_body: - $s5 = $s5 - $t0 = local[22] + local[43] = $t0 + $t0 = local[42] + $t1 = local[43] + $t0 = $t1 + local[43] = $t1 + local[42] = $t0 + $t0 = local[41] + $t1 = local[42] + $t0 = $t1 + local[42] = $t1 + local[41] = $t0 + $t0 = local[41] + if0 $t0 goto :if384_else + local[41] = $t0 +if384_body: + $t0 = local[55] + $t0 = $s5 + local[55] = $t0 + $t0 = local[55] + $s5 = $t0 + local[55] = $t0 + $t0 = local[58] $t0 = [$s5+0] - local[22] = $t0 - $t0 = local[19] - $t1 = local[22] + local[58] = $t0 + $t0 = local[57] + $t1 = local[58] $t0 = [$t1+28] - local[22] = $t1 - local[19] = $t0 + local[58] = $t1 + local[57] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1440,37 +1812,49 @@ if187_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[19] - $t1 = local[19] + $t0 = local[57] + $t1 = local[57] call $t1 - local[19] = $t1 - local[19] = $t0 + local[57] = $t1 + local[57] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[23] + $t0 = local[56] $t0 = $v0 - local[23] = $t0 - $t0 = local[20] - $t1 = local[23] + local[56] = $t0 + $t0 = local[62] + $t1 = local[56] + $t0 = $t1 + local[56] = $t1 + local[62] = $t0 + $t0 = local[59] + $t1 = local[62] $t0 = Eq($t1 0 ) - local[23] = $t1 - local[20] = $t0 - $t0 = local[20] - $t6 = $t0 - local[20] = $t0 - $s5 = $s5 - $t0 = local[15] + local[62] = $t1 + local[59] = $t0 + $t0 = local[61] + $t1 = local[59] + $t0 = $t1 + local[59] = $t1 + local[61] = $t0 + $t0 = local[60] + $t0 = $s5 + local[60] = $t0 + $t0 = local[60] + $s5 = $t0 + local[60] = $t0 + $t0 = local[50] $t0 = [$s5+0] - local[15] = $t0 - $t0 = local[18] - $t1 = local[15] + local[50] = $t0 + $t0 = local[49] + $t1 = local[50] $t0 = [$t1+32] - local[15] = $t1 - local[18] = $t0 + local[50] = $t1 + local[49] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1478,61 +1862,108 @@ if187_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[18] - $t1 = local[18] + $t0 = local[49] + $t1 = local[49] call $t1 - local[18] = $t1 - local[18] = $t0 + local[49] = $t1 + local[49] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[16] + $t0 = local[63] $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] + local[63] = $t0 + $t0 = local[46] + $t1 = local[63] $t0 = $t1 - local[21] = $t1 - local[52] = $t0 + local[63] = $t1 + local[46] = $t0 + $t0 = local[64] + $t1 = local[46] + $t0 = Eq($t1 0 ) + local[46] = $t1 + local[64] = $t0 + $t0 = local[45] + $t1 = local[64] + $t0 = $t1 + local[64] = $t1 + local[45] = $t0 + $t0 = local[48] + $t1 = local[61] + $t0 = Eq(1 $t1 ) + local[61] = $t1 + local[48] = $t0 + $t0 = local[47] + $t1 = local[45] + $t0 = Eq(1 $t1 ) + local[45] = $t1 + local[47] = $t0 + $t0 = local[40] + $t1 = local[48] + $t2 = local[47] + $t0 = Eq($t1 $t2 ) + local[47] = $t2 + local[48] = $t1 + local[40] = $t0 $t0 = local[52] - if0 $t0 goto :if188_else + $t1 = local[40] + $t0 = $t1 + local[40] = $t1 local[52] = $t0 -if188_body: + $t0 = local[51] + $t1 = local[52] + $t0 = $t1 + local[52] = $t1 + local[51] = $t0 + $t0 = local[51] + if0 $t0 goto :if387_else + local[51] = $t0 +if387_body: $t0 = local[53] $t0 = 1 local[53] = $t0 - goto :if188_end -if188_else: - $t0 = local[39] + $t0 = local[80] + $t1 = local[53] + $t0 = $t1 + local[53] = $t1 + local[80] = $t0 + $t0 = local[54] + $t1 = local[80] + $t0 = $t1 + local[80] = $t1 + local[54] = $t0 + goto :if387_end +if387_else: + $t0 = local[81] + $t0 = $s6 + local[81] = $t0 + $t0 = local[77] $t0 = [$s6+0] - local[39] = $t0 - $t0 = local[38] + local[77] = $t0 + $t0 = local[76] $t0 = $s4 - local[38] = $t0 - $t0 = local[47] + local[76] = $t0 + $t0 = local[79] + $t1 = local[76] + $t0 = $t1 + local[76] = $t1 + local[79] = $t0 + $t0 = local[78] $t0 = $s5 - local[47] = $t0 - $t0 = local[39] - $t1 = local[39] + local[78] = $t0 + $t0 = local[84] + $t1 = local[78] + $t0 = $t1 + local[78] = $t1 + local[84] = $t0 + $t0 = local[77] + $t1 = local[77] $t0 = [$t1+56] - local[39] = $t1 - local[39] = $t0 + local[77] = $t1 + local[77] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1540,48 +1971,54 @@ if188_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $t0 = local[38] + $t0 = local[79] $a1 = $t0 - local[38] = $t0 - $t0 = local[47] + local[79] = $t0 + $t0 = local[84] $a2 = $t0 - local[47] = $t0 - $t0 = local[39] - $t1 = local[39] + local[84] = $t0 + $t0 = local[77] + $t1 = local[77] call $t1 - local[39] = $t1 - local[39] = $t0 + local[77] = $t1 + local[77] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[37] + $t0 = local[82] $t0 = $v0 - local[37] = $t0 - $t0 = local[53] - $t1 = local[37] + local[82] = $t0 + $t0 = local[83] + $t1 = local[82] $t0 = $t1 - local[37] = $t1 - local[53] = $t0 -if188_end: - goto :if187_end -if187_else: - $t0 = local[51] - $t0 = [$s6+0] - local[51] = $t0 - $t0 = local[49] - $t0 = $s4 - local[49] = $t0 - $t0 = local[42] + local[82] = $t1 + local[83] = $t0 + $t0 = local[54] + $t1 = local[83] + $t0 = $t1 + local[83] = $t1 + local[54] = $t0 +if387_end: + goto :if384_end +if384_else: + $t0 = local[27] + $t0 = $s6 + local[27] = $t0 + $t7 = [$s6+0] + $t6 = $s4 + $t4 = $t6 + $t0 = local[89] $t0 = $s5 - local[42] = $t0 - $t0 = local[51] - $t1 = local[51] - $t0 = [$t1+56] - local[51] = $t1 - local[51] = $t0 + local[89] = $t0 + $t0 = local[15] + $t1 = local[89] + $t0 = $t1 + local[89] = $t1 + local[15] = $t0 + $t7 = [$t7+56] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1589,44 +2026,75 @@ if187_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $t0 = local[49] - $a1 = $t0 - local[49] = $t0 - $t0 = local[42] + $a1 = $t4 + $t0 = local[15] $a2 = $t0 - local[42] = $t0 - $t0 = local[51] - $t1 = local[51] - call $t1 - local[51] = $t1 - local[51] = $t0 + local[15] = $t0 + call $t7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[46] + $t0 = local[87] $t0 = $v0 - local[46] = $t0 - $t0 = local[53] - $t1 = local[46] + local[87] = $t0 + $t0 = local[16] + $t1 = local[87] $t0 = $t1 - local[46] = $t1 - local[53] = $t0 -if187_end: - $t0 = local[14] + local[87] = $t1 + local[16] = $t0 + $t0 = local[54] + $t1 = local[16] + $t0 = $t1 + local[16] = $t1 + local[54] = $t0 +if384_end: + $t0 = local[17] $t0 = 1 + local[17] = $t0 + $t0 = local[18] + $t1 = local[17] + $t0 = $t1 + local[17] = $t1 + local[18] = $t0 + $t0 = local[14] + $t1 = local[18] + $t0 = $t1 + local[18] = $t1 local[14] = $t0 - $s3 = 0 -if176_end: -if165_end: - $s1 = 0 - goto :while160_test -while160_end: + $t0 = local[88] + $t0 = 0 + local[88] = $t0 + $t0 = local[85] + $t1 = local[88] + $t0 = $t1 + local[88] = $t1 + local[85] = $t0 + $t0 = local[85] + $s3 = $t0 + local[85] = $t0 +if364_end: +if344_end: + $t0 = local[86] + $t0 = 0 + local[86] = $t0 + $t0 = local[75] + $t1 = local[86] + $t0 = $t1 + local[86] = $t1 + local[75] = $t0 + $t0 = local[75] + $s1 = $t0 + local[75] = $t0 + goto :while335_test +while335_end: $t0 = local[14] $t4 = $t0 local[14] = $t0 + $t5 = $t4 + $t4 = $t5 $v0 = $t4 $s0 = local[0] $s1 = local[1] @@ -1649,7 +2117,8 @@ func Tree_Remove [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = $a2 - $s7 = $s7 + $s4 = $s7 + $s7 = $s4 $s4 = [$s7+0] $s3 = [$s4+32] local[8] = $t3 @@ -1668,12 +2137,16 @@ func Tree_Remove [in 0, out 0, local 14] $t8 = local[13] $s4 = $v0 $s3 = $s4 - if0 $s3 goto :if211_else -if211_body: - $s3 = [$s5+0] - $s4 = $s6 - $s2 = $s7 - $s3 = [$s3+64] + $s4 = $s3 + if0 $s4 goto :if433_else +if433_body: + $s4 = $s5 + $s4 = [$s5+0] + $s3 = $s6 + $s2 = $s3 + $s3 = $s7 + $s1 = $s3 + $s4 = [$s4+64] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1681,22 +2154,24 @@ if211_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s4 - $a2 = $s2 - call $s3 + $a1 = $s2 + $a2 = $s1 + call $s4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s2 = $s1 - goto :if211_end -if211_else: - $s7 = $s7 + $s3 = $v0 + $s1 = $s3 + $s3 = $s1 + goto :if433_end +if433_else: + $s1 = $s7 + $s7 = $s1 $s1 = [$s7+0] - $s4 = [$s1+28] + $s2 = [$s1+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1704,7 +2179,7 @@ if211_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1712,13 +2187,17 @@ if211_else: $t7 = local[12] $t8 = local[13] $s1 = $v0 - $s4 = $s1 - if0 $s4 goto :if219_else -if219_body: - $s4 = [$s5+0] - $s1 = $s6 - $s3 = $s7 - $s4 = [$s4+60] + $s2 = $s1 + $s1 = $s2 + if0 $s1 goto :if447_else +if447_body: + $s1 = $s5 + $s1 = [$s5+0] + $s2 = $s6 + $s4 = $s2 + $s2 = $s7 + $s0 = $s2 + $s1 = [$s1+60] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1726,22 +2205,24 @@ if219_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s1 - $a2 = $s3 - call $s4 + $a1 = $s4 + $a2 = $s0 + call $s1 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s2 = $s0 - goto :if219_end -if219_else: - $s7 = $s7 + $s2 = $v0 + $s0 = $s2 + $s3 = $s0 + goto :if447_end +if447_else: + $s0 = $s7 + $s7 = $s0 $s0 = [$s7+0] - $s3 = [$s0+20] + $s2 = [$s0+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1749,7 +2230,7 @@ if219_else: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1757,10 +2238,12 @@ if219_else: $t7 = local[12] $t8 = local[13] $s0 = $v0 - $s3 = $s0 - $s6 = $s6 - $s0 = [$s6+0] - $s7 = [$s0+16] + $s2 = $s0 + $s0 = $s2 + $s2 = $s6 + $s6 = $s2 + $s2 = [$s6+0] + $s7 = [$s2+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1775,10 +2258,12 @@ if219_else: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $s7 = $s0 - $s0 = [$s7+0] - $s1 = [$s0+20] + $s2 = $v0 + $s7 = $s2 + $s2 = $s7 + $s7 = $s2 + $s2 = [$s7+0] + $s4 = [$s2+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1786,19 +2271,23 @@ if219_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] - $s0 = $v0 - $s1 = $s0 - $s0 = [$s5+0] - $s7 = $s3 - $s3 = $s1 - $s0 = [$s0+44] + $s2 = $v0 + $s4 = $s2 + $s2 = $s4 + $s4 = $s5 + $s4 = [$s5+0] + $s7 = $s0 + $s0 = $s7 + $s7 = $s2 + $s2 = $s7 + $s4 = [$s4+44] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1806,23 +2295,26 @@ if219_else: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $a1 = $s7 - $a2 = $s3 - call $s0 + $a1 = $s0 + $a2 = $s2 + call $s4 $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 :if237_else -if237_body: - $s6 = $s6 - $s3 = [$s6+0] - $s1 = [$s3+8] - $s3 = [$s5+104] + $s7 = $v0 + $s2 = $s7 + $s7 = $s2 + if0 $s7 goto :if477_else +if477_body: + $s7 = $s6 + $s6 = $s7 + $s7 = [$s6+0] + $s2 = [$s7+8] + $s7 = [$s5+104] + $s0 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1830,8 +2322,8 @@ if237_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s3 - call $s1 + $a1 = $s0 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -1839,11 +2331,14 @@ if237_body: $t7 = local[12] $t8 = local[13] $s7 = $v0 - $s2 = $s7 - $s6 = $s6 - $s7 = [$s6+0] - $s3 = [$s7+36] - $s7 = 0 + $s0 = $s7 + $s3 = $s0 + $s0 = $s6 + $s6 = $s0 + $s0 = [$s6+0] + $s7 = [$s0+36] + $s0 = 0 + $s2 = $s0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1851,22 +2346,25 @@ if237_body: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 - call $s3 + $a1 = $s2 + call $s7 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 - $s2 = $s1 - goto :if237_end -if237_else: - $s6 = $s6 - $s1 = [$s6+0] - $s7 = [$s1+4] - $s1 = [$s5+104] + $s0 = $v0 + $s2 = $s0 + $s3 = $s2 + goto :if477_end +if477_else: + $s2 = $s6 + $s6 = $s2 + $s2 = [$s6+0] + $s0 = [$s2+4] + $s2 = [$s5+104] + $s5 = $s2 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1874,20 +2372,23 @@ if237_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s1 - call $s7 + $a1 = $s5 + call $s0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s2 = $s5 - $s6 = $s6 + $s2 = $v0 + $s5 = $s2 + $s3 = $s5 + $s5 = $s6 + $s6 = $s5 $s5 = [$s6+0] - $s1 = [$s5+40] + $s2 = [$s5+40] $s5 = 0 + $s0 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1895,21 +2396,24 @@ if237_else: local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s5 - call $s1 + $a1 = $s0 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s2 = $s7 -if237_end: -if219_end: -if211_end: - $s7 = 1 - $v0 = $s7 + $s5 = $v0 + $s0 = $s5 + $s3 = $s0 +if477_end: +if447_end: +if433_end: + $s0 = 1 + $s3 = $s0 + $s0 = $s3 + $v0 = $s0 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -1919,7 +2423,7 @@ if211_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveRight [in 0, out 0, local 23] +func Tree_RemoveRight [in 0, out 0, local 34] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -1931,12 +2435,17 @@ func Tree_RemoveRight [in 0, out 0, local 23] local[15] = $a0 local[14] = $a1 $s7 = $a2 -while259_test: - $s7 = $s7 - $s5 = [$s7+0] - $t0 = local[18] - $t0 = [$s5+28] - local[18] = $t0 +while517_test: + $s4 = $s7 + $s7 = $s4 + $t0 = local[29] + $t0 = [$s7+0] + local[29] = $t0 + $t0 = local[28] + $t1 = local[29] + $t0 = [$t1+28] + local[29] = $t1 + local[28] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1944,41 +2453,60 @@ while259_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $t0 = local[18] - $t1 = local[18] + $t0 = local[28] + $t1 = local[28] call $t1 - local[18] = $t1 - local[18] = $t0 + local[28] = $t1 + local[28] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[16] + $t0 = local[27] $t0 = $v0 - local[16] = $t0 - $t0 = local[17] - $t1 = local[16] + local[27] = $t0 + $t0 = local[31] + $t1 = local[27] $t0 = $t1 - local[16] = $t1 - local[17] = $t0 - $t0 = local[17] - if0 $t0 goto :while259_end - local[17] = $t0 -while259_body: - $s7 = $s7 - $t0 = local[22] - $t0 = [$s7+0] - local[22] = $t0 + local[27] = $t1 + local[31] = $t0 + $t0 = local[30] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[30] = $t0 + $t0 = local[30] + if0 $t0 goto :while517_end + local[30] = $t0 +while517_body: $t0 = local[21] - $t1 = local[22] - $t0 = [$t1+24] - local[22] = $t1 + $t0 = $s7 + local[21] = $t0 + $t0 = local[21] + $s7 = $t0 local[21] = $t0 - $s7 = $s7 - $t6 = [$s7+0] - $s3 = [$t6+12] + $t0 = local[24] + $t0 = [$s7+0] + local[24] = $t0 + $t0 = local[23] + $t1 = local[24] + $t0 = [$t1+24] + local[24] = $t1 + local[23] = $t0 + $t0 = local[20] + $t0 = $s7 + local[20] = $t0 + $t0 = local[20] + $s7 = $t0 + local[20] = $t0 + $t0 = local[19] + $t0 = [$s7+0] + local[19] = $t0 + $t0 = local[19] + $s6 = [$t0+12] + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -1986,33 +2514,43 @@ while259_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s4 = $t5 - $s1 = [$s4+0] - $s2 = [$s1+20] + $t0 = local[17] + $t0 = $v0 + local[17] = $t0 + $t0 = local[17] + $t3 = $t0 + local[17] = $t0 + $s5 = $t3 + $t6 = $s5 + $t7 = [$t6+0] + $t4 = [$t7+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s4 - call $s2 + $a0 = $t6 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $t3 = $s0 + $t0 = local[18] + $t0 = $v0 + local[18] = $t0 + $t0 = local[18] + $t5 = $t0 + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2020,32 +2558,46 @@ while259_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $t3 - $t0 = local[21] - $t1 = local[21] + $a1 = $t5 + $t0 = local[23] + $t1 = local[23] call $t1 - local[21] = $t1 - local[21] = $t0 + 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[19] + $t0 = local[32] $t0 = $v0 - local[19] = $t0 - $t0 = local[20] - $t1 = local[19] - $t0 = $t1 - local[19] = $t1 - local[20] = $t0 + local[32] = $t0 + $t0 = local[32] + $s2 = $t0 + local[32] = $t0 + $t0 = local[33] + $t0 = $s2 + local[33] = $t0 + $s3 = $s7 + $s0 = $s3 $t0 = local[14] - $t0 = $s7 + $t0 = $s0 local[14] = $t0 - $s7 = $s7 - $s6 = [$s7+0] - $t7 = [$s6+12] + $t0 = local[26] + $t0 = $s7 + local[26] = $t0 + $t0 = local[26] + $s7 = $t0 + local[26] = $t0 + $t0 = local[25] + $t0 = [$s7+0] + local[25] = $t0 + $t0 = local[16] + $t1 = local[25] + $t0 = [$t1+12] + local[25] = $t1 + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2053,21 +2605,31 @@ while259_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $t7 + $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] - $t4 = $v0 - $s7 = $t4 - goto :while259_test -while259_end: + $s1 = $v0 + $t0 = local[22] + $t0 = $s1 + local[22] = $t0 + $t0 = local[22] + $s7 = $t0 + local[22] = $t0 + goto :while517_test +while517_end: $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $s5 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $s5 local[14] = $t0 $t0 = local[14] $s5 = [$t0+0] @@ -2076,6 +2638,7 @@ while259_end: $t0 = local[15] $s5 = [$t0+104] local[15] = $t0 + $t3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2085,7 +2648,7 @@ while259_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $s5 + $a1 = $t3 call $s6 $t3 = local[8] $t4 = local[9] @@ -2093,20 +2656,23 @@ while259_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t3 = $v0 - $t0 = local[20] + $s5 = $v0 + $t3 = $s5 + $t0 = local[33] $t0 = $t3 - local[20] = $t0 + local[33] = $t0 $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $t3 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $t3 local[14] = $t0 $t0 = local[14] $t3 = [$t0+0] local[14] = $t0 $s5 = [$t3+40] $t3 = 0 + $s6 = $t3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2116,7 +2682,7 @@ while259_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $t3 + $a1 = $s6 call $s5 $t3 = local[8] $t4 = local[9] @@ -2124,11 +2690,14 @@ while259_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $t0 = local[20] + $t3 = $v0 + $s6 = $t3 + $t0 = local[33] $t0 = $s6 - local[20] = $t0 + local[33] = $t0 $s6 = 1 + $t3 = $s6 + $s6 = $t3 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -2139,7 +2708,7 @@ while259_end: $s6 = local[6] $s7 = local[7] ret -func Tree_RemoveLeft [in 0, out 0, local 23] +func Tree_RemoveLeft [in 0, out 0, local 34] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -2151,12 +2720,17 @@ func Tree_RemoveLeft [in 0, out 0, local 23] local[15] = $a0 local[14] = $a1 $s7 = $a2 -while287_test: - $s7 = $s7 - $s5 = [$s7+0] - $t0 = local[18] - $t0 = [$s5+32] - local[18] = $t0 +while564_test: + $s4 = $s7 + $s7 = $s4 + $t0 = local[29] + $t0 = [$s7+0] + local[29] = $t0 + $t0 = local[28] + $t1 = local[29] + $t0 = [$t1+32] + local[29] = $t1 + local[28] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2164,41 +2738,60 @@ while287_test: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $t0 = local[18] - $t1 = local[18] + $t0 = local[28] + $t1 = local[28] call $t1 - local[18] = $t1 - local[18] = $t0 + local[28] = $t1 + local[28] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[16] + $t0 = local[27] $t0 = $v0 - local[16] = $t0 - $t0 = local[17] - $t1 = local[16] + local[27] = $t0 + $t0 = local[31] + $t1 = local[27] $t0 = $t1 - local[16] = $t1 - local[17] = $t0 - $t0 = local[17] - if0 $t0 goto :while287_end - local[17] = $t0 -while287_body: - $s7 = $s7 - $t0 = local[22] - $t0 = [$s7+0] - local[22] = $t0 + local[27] = $t1 + local[31] = $t0 + $t0 = local[30] + $t1 = local[31] + $t0 = $t1 + local[31] = $t1 + local[30] = $t0 + $t0 = local[30] + if0 $t0 goto :while564_end + local[30] = $t0 +while564_body: $t0 = local[21] - $t1 = local[22] - $t0 = [$t1+24] - local[22] = $t1 + $t0 = $s7 local[21] = $t0 - $s7 = $s7 - $t6 = [$s7+0] - $s3 = [$t6+16] + $t0 = local[21] + $s7 = $t0 + local[21] = $t0 + $t0 = local[24] + $t0 = [$s7+0] + local[24] = $t0 + $t0 = local[23] + $t1 = local[24] + $t0 = [$t1+24] + local[24] = $t1 + local[23] = $t0 + $t0 = local[20] + $t0 = $s7 + local[20] = $t0 + $t0 = local[20] + $s7 = $t0 + local[20] = $t0 + $t0 = local[19] + $t0 = [$s7+0] + local[19] = $t0 + $t0 = local[19] + $s6 = [$t0+16] + local[19] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2206,33 +2799,43 @@ while287_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s4 = $t5 - $s1 = [$s4+0] - $s2 = [$s1+20] + $t0 = local[17] + $t0 = $v0 + local[17] = $t0 + $t0 = local[17] + $t3 = $t0 + local[17] = $t0 + $s5 = $t3 + $t6 = $s5 + $t7 = [$t6+0] + $t4 = [$t7+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s4 - call $s2 + $a0 = $t6 + call $t4 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s0 = $v0 - $t3 = $s0 + $t0 = local[18] + $t0 = $v0 + local[18] = $t0 + $t0 = local[18] + $t5 = $t0 + local[18] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2240,32 +2843,46 @@ while287_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - $a1 = $t3 - $t0 = local[21] - $t1 = local[21] + $a1 = $t5 + $t0 = local[23] + $t1 = local[23] call $t1 - local[21] = $t1 - local[21] = $t0 + 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[19] + $t0 = local[32] $t0 = $v0 - local[19] = $t0 - $t0 = local[20] - $t1 = local[19] - $t0 = $t1 - local[19] = $t1 - local[20] = $t0 + local[32] = $t0 + $t0 = local[32] + $s2 = $t0 + local[32] = $t0 + $t0 = local[33] + $t0 = $s2 + local[33] = $t0 + $s3 = $s7 + $s0 = $s3 $t0 = local[14] - $t0 = $s7 + $t0 = $s0 local[14] = $t0 - $s7 = $s7 - $s6 = [$s7+0] - $t7 = [$s6+16] + $t0 = local[26] + $t0 = $s7 + local[26] = $t0 + $t0 = local[26] + $s7 = $t0 + local[26] = $t0 + $t0 = local[25] + $t0 = [$s7+0] + local[25] = $t0 + $t0 = local[16] + $t1 = local[25] + $t0 = [$t1+16] + local[25] = $t1 + local[16] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2273,21 +2890,31 @@ while287_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $t7 + $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] - $t4 = $v0 - $s7 = $t4 - goto :while287_test -while287_end: + $s1 = $v0 + $t0 = local[22] + $t0 = $s1 + local[22] = $t0 + $t0 = local[22] + $s7 = $t0 + local[22] = $t0 + goto :while564_test +while564_end: $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $s5 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $s5 local[14] = $t0 $t0 = local[14] $s5 = [$t0+0] @@ -2296,6 +2923,7 @@ while287_end: $t0 = local[15] $s5 = [$t0+104] local[15] = $t0 + $t3 = $s5 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2305,7 +2933,7 @@ while287_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $s5 + $a1 = $t3 call $s6 $t3 = local[8] $t4 = local[9] @@ -2313,20 +2941,23 @@ while287_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t3 = $v0 - $t0 = local[20] + $s5 = $v0 + $t3 = $s5 + $t0 = local[33] $t0 = $t3 - local[20] = $t0 + local[33] = $t0 $t0 = local[14] - $t1 = local[14] - $t0 = $t1 - local[14] = $t1 + $t3 = $t0 + local[14] = $t0 + $t0 = local[14] + $t0 = $t3 local[14] = $t0 $t0 = local[14] $t3 = [$t0+0] local[14] = $t0 $s5 = [$t3+36] $t3 = 0 + $s6 = $t3 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2336,7 +2967,7 @@ while287_end: $t0 = local[14] $a0 = $t0 local[14] = $t0 - $a1 = $t3 + $a1 = $s6 call $s5 $t3 = local[8] $t4 = local[9] @@ -2344,11 +2975,14 @@ while287_end: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $t0 = local[20] + $t3 = $v0 + $s6 = $t3 + $t0 = local[33] $t0 = $s6 - local[20] = $t0 + local[33] = $t0 $s6 = 1 + $t3 = $s6 + $s6 = $t3 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -2359,7 +2993,7 @@ while287_end: $s6 = local[6] $s7 = local[7] ret -func Tree_Search [in 0, out 0, local 27] +func Tree_Search [in 0, out 0, local 43] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -2371,23 +3005,44 @@ func Tree_Search [in 0, out 0, local 27] $s6 = $a0 $s7 = $a1 $s5 = $s6 + $s6 = $s5 + $s5 = $s6 $s6 = 1 + $s4 = $s6 + $s6 = $s4 + $s4 = 0 + $s3 = $s4 $t0 = local[14] - $t0 = 0 + $t0 = $s3 local[14] = $t0 -while315_test: +while617_test: $s3 = $s6 - if0 $s3 goto :while315_end -while315_body: - $s5 = $s5 - $t0 = local[24] + $t0 = local[36] + $t0 = $s3 + local[36] = $t0 + $t0 = local[26] + $t1 = local[36] + $t0 = $t1 + local[36] = $t1 + local[26] = $t0 + $t0 = local[26] + if0 $t0 goto :while617_end + local[26] = $t0 +while617_body: + $t0 = local[28] + $t0 = $s5 + local[28] = $t0 + $t0 = local[28] + $s5 = $t0 + local[28] = $t0 + $t0 = local[18] $t0 = [$s5+0] - local[24] = $t0 - $t0 = local[23] - $t1 = local[24] + local[18] = $t0 + $t0 = local[17] + $t1 = local[18] $t0 = [$t1+20] - local[24] = $t1 - local[23] = $t0 + local[18] = $t1 + local[17] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2395,58 +3050,57 @@ while315_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[23] - $t1 = local[23] + $t0 = local[17] + $t1 = local[17] call $t1 - local[23] = $t1 - local[23] = $t0 + local[17] = $t1 + local[17] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t0 = local[21] + $t0 = local[30] $t0 = $v0 - local[21] = $t0 + local[30] = $t0 + $t0 = local[20] + $t1 = local[30] + $t0 = $t1 + local[30] = $t1 + local[20] = $t0 $t0 = local[22] - $t1 = local[21] + $t1 = local[20] $t0 = $t1 - local[21] = $t1 + local[20] = $t1 local[22] = $t0 - $t0 = local[20] - $t0 = $s7 - local[20] = $t0 - $t0 = local[19] + $t4 = $s7 + $t0 = local[16] $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 + local[16] = $t0 + $t0 = local[42] + $t1 = local[16] + $t0 = LtS($t4 $t1 ) + local[16] = $t1 + local[42] = $t0 $t0 = local[15] - $t1 = local[18] + $t1 = local[42] $t0 = $t1 - local[18] = $t1 + local[42] = $t1 local[15] = $t0 $t0 = local[15] - if0 $t0 goto :if320_else + $t7 = $t0 local[15] = $t0 -if320_body: - $s5 = $s5 - $t0 = local[17] - $t0 = [$s5+0] - local[17] = $t0 - $t0 = local[16] - $t1 = local[17] - $t0 = [$t1+32] - local[17] = $t1 - local[16] = $t0 + if0 $t7 goto :if626_else +if626_body: + $t5 = $s5 + $s5 = $t5 + $t6 = [$s5+0] + $t0 = local[40] + $t0 = [$t6+32] + local[40] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2454,32 +3108,44 @@ if320_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - $t0 = local[16] - $t1 = local[16] + $t0 = local[40] + $t1 = local[40] call $t1 - local[16] = $t1 - local[16] = $t0 + local[40] = $t1 + local[40] = $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[25] - $t4 = $t0 - local[25] = $t0 - if0 $t4 goto :if324_else -if324_body: - $s5 = $s5 - $t0 = local[26] + $s0 = $v0 + $t0 = local[39] + $t0 = $s0 + local[39] = $t0 + $t0 = local[21] + $t1 = local[39] + $t0 = $t1 + local[39] = $t1 + local[21] = $t0 + $t0 = local[21] + if0 $t0 goto :if631_else + local[21] = $t0 +if631_body: + $t0 = local[33] + $t0 = $s5 + local[33] = $t0 + $t0 = local[33] + $s5 = $t0 + local[33] = $t0 + $t0 = local[38] $t0 = [$s5+0] - local[26] = $t0 - $t0 = local[26] - $s0 = [$t0+16] - local[26] = $t0 + local[38] = $t0 + $t0 = local[35] + $t1 = local[38] + $t0 = [$t1+16] + local[38] = $t1 + local[35] = $t0 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2487,30 +3153,67 @@ if324_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s0 + $t0 = local[35] + $t1 = local[35] + call $t1 + local[35] = $t1 + local[35] = $t0 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t5 = $v0 - $s5 = $t5 - goto :if324_end -if324_else: - $s6 = 0 -if324_end: - goto :if320_end -if320_else: - $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 + $t0 = local[34] + $t0 = $v0 + local[34] = $t0 + $t0 = local[25] + $t1 = local[34] + $t0 = $t1 + local[34] = $t1 + local[25] = $t0 + $t0 = local[25] + $s5 = $t0 + local[25] = $t0 + goto :if631_end +if631_else: + $t0 = local[23] + $t0 = 0 + local[23] = $t0 + $t0 = local[31] + $t1 = local[23] + $t0 = $t1 + local[23] = $t1 + local[31] = $t0 + $t0 = local[31] + $s6 = $t0 + local[31] = $t0 +if631_end: + goto :if626_end +if626_else: + $t0 = local[19] + $t1 = local[22] + $t0 = $t1 + local[22] = $t1 + local[19] = $t0 + $s1 = $s7 + $t0 = local[29] + $t1 = local[19] + $t0 = LtS($t1 $s1 ) + local[19] = $t1 + local[29] = $t0 + $t0 = local[29] + $s2 = $t0 + local[29] = $t0 + $t0 = local[41] + $t0 = $s2 + local[41] = $t0 + $t0 = local[41] + if0 $t0 goto :if644_else + local[41] = $t0 +if644_body: + $s4 = $s5 + $s5 = $s4 $s4 = [$s5+0] $t3 = [$s4+28] local[8] = $t3 @@ -2529,11 +3232,13 @@ if331_body: $t8 = local[13] $s4 = $v0 $t3 = $s4 - if0 $t3 goto :if335_else -if335_body: - $s5 = $s5 - $t3 = [$s5+0] - $s4 = [$t3+12] + $s4 = $t3 + if0 $s4 goto :if649_else +if649_body: + $s4 = $s5 + $s5 = $s4 + $s4 = [$s5+0] + $t3 = [$s4+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2541,32 +3246,57 @@ if335_body: local[12] = $t7 local[13] = $t8 $a0 = $s5 - call $s4 + call $t3 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $t3 = $v0 + $s4 = $v0 + $t3 = $s4 $s5 = $t3 - goto :if335_end -if335_else: - $s6 = 0 -if335_end: - goto :if331_end -if331_else: - $t0 = local[14] + goto :if649_end +if649_else: + $t3 = 0 + $s4 = $t3 + $s6 = $s4 +if649_end: + goto :if644_end +if644_else: + $t0 = local[37] $t0 = 1 + local[37] = $t0 + $t0 = local[27] + $t1 = local[37] + $t0 = $t1 + local[37] = $t1 + local[27] = $t0 + $t0 = local[14] + $t1 = local[27] + $t0 = $t1 + local[27] = $t1 local[14] = $t0 - $s6 = 0 -if331_end: -if320_end: - goto :while315_test -while315_end: + $t0 = local[24] + $t0 = 0 + local[24] = $t0 + $t0 = local[32] + $t1 = local[24] + $t0 = $t1 + local[24] = $t1 + local[32] = $t0 + $t0 = local[32] + $s6 = $t0 + local[32] = $t0 +if644_end: +if626_end: + goto :while617_test +while617_end: $t0 = local[14] $t4 = $t0 local[14] = $t0 + $t5 = $t4 + $t4 = $t5 $v0 = $t4 $s0 = local[0] $s1 = local[1] @@ -2586,10 +3316,14 @@ func Tree_Print [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $s6 - $s5 = [$s6+0] - $s4 = $s7 + $s7 = $a0 + $s6 = $s7 + $s5 = $s6 + $s6 = $s5 + $s5 = $s7 + $s5 = [$s7+0] + $s4 = $s6 + $s6 = $s4 $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 @@ -2597,8 +3331,8 @@ func Tree_Print [in 0, out 0, local 14] local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s4 + $a0 = $s7 + $a1 = $s6 call $s5 $t3 = local[8] $t4 = local[9] @@ -2606,9 +3340,12 @@ func Tree_Print [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s4 = $s7 + $s4 = $v0 + $s6 = $s4 + $s4 = $s6 $s4 = 1 + $s6 = $s4 + $s4 = $s6 $v0 = $s4 $s0 = local[0] $s1 = local[1] @@ -2630,7 +3367,8 @@ func Tree_RecPrint [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 - $s7 = $s7 + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] $s4 = [$s5+32] local[8] = $t3 @@ -2649,12 +3387,15 @@ func Tree_RecPrint [in 0, out 0, local 14] $t8 = local[13] $s5 = $v0 $s4 = $s5 - if0 $s4 goto :if347_else -if347_body: - $s4 = [$s6+0] - $s7 = $s7 - $s5 = [$s7+0] - $s3 = [$s5+16] + $s5 = $s4 + if0 $s5 goto :if680_else +if680_body: + $s5 = $s6 + $s5 = [$s6+0] + $s4 = $s7 + $s7 = $s4 + $s4 = [$s7+0] + $s3 = [$s4+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2669,9 +3410,9 @@ if347_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 - $s4 = [$s4+76] + $s4 = $v0 + $s3 = $s4 + $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2680,22 +3421,26 @@ if347_body: local[13] = $t8 $a0 = $s6 $a1 = $s3 - call $s4 + call $s5 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s3 = $s5 - goto :if347_end -if347_else: + $s4 = $v0 + $s3 = $s4 + $s4 = $s3 + goto :if680_end +if680_else: $s3 = 1 -if347_end: - $s7 = $s7 + $s5 = $s3 + $s4 = $s5 +if680_end: + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] - $s4 = [$s5+20] + $s3 = [$s5+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2703,7 +3448,7 @@ if347_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s4 + call $s3 $t3 = local[8] $t4 = local[9] $t5 = local[10] @@ -2711,11 +3456,13 @@ if347_end: $t7 = local[12] $t8 = local[13] $s5 = $v0 - $s4 = $s5 - PrintIntS($s4 ) - $s7 = $s7 - $s4 = [$s7+0] - $s5 = [$s4+28] + $s3 = $s5 + $s5 = $s3 + PrintIntS($s5 ) + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s3 = [$s5+28] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2723,21 +3470,24 @@ if347_end: 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] - $s4 = $v0 - $s5 = $s4 - if0 $s5 goto :if361_else -if361_body: + $s5 = $v0 + $s3 = $s5 + $s5 = $s3 + if0 $s5 goto :if703_else +if703_body: + $s5 = $s6 $s5 = [$s6+0] - $s7 = $s7 - $s4 = [$s7+0] - $s2 = [$s4+12] + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s2 = [$s3+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2752,8 +3502,8 @@ if361_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s2 = $s4 + $s3 = $v0 + $s2 = $s3 $s5 = [$s5+76] local[8] = $t3 local[9] = $t4 @@ -2770,13 +3520,18 @@ if361_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s3 = $s4 - goto :if361_end -if361_else: - $s3 = 1 -if361_end: + $s3 = $v0 + $s2 = $s3 + $s4 = $s2 + goto :if703_end +if703_else: + $s2 = 1 + $s3 = $s2 + $s4 = $s3 +if703_end: $s3 = 1 + $s4 = $s3 + $s3 = $s4 $v0 = $s3 $s0 = local[0] $s1 = local[1] @@ -2799,11 +3554,15 @@ func Tree_accept [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = 333 + $s4 = $s7 + $s7 = $s4 PrintIntS($s7 ) - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s4 = [$s7+0] $s7 = $s5 + $s5 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2811,7 +3570,7 @@ func Tree_accept [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 + $a1 = $s5 call $s4 $t3 = local[8] $t4 = local[9] @@ -2819,9 +3578,12 @@ func Tree_accept [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 + $s7 = $v0 + $s5 = $s7 $s7 = $s5 $s7 = 0 + $s5 = $s7 + $s7 = $s5 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -2843,7 +3605,8 @@ func Visitor_visit [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 - $s7 = $s7 + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] $s4 = [$s5+28] local[8] = $t3 @@ -2862,11 +3625,13 @@ func Visitor_visit [in 0, out 0, local 14] $t8 = local[13] $s5 = $v0 $s4 = $s5 - if0 $s4 goto :if378_else -if378_body: - $s7 = $s7 - $s4 = [$s7+0] - $s5 = [$s4+12] + $s5 = $s4 + if0 $s5 goto :if736_else +if736_body: + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2874,27 +3639,30 @@ if378_body: 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] - $s4 = $v0 + $s5 = $v0 + $s4 = $s5 [$s6+8] = $s4 $s4 = [$s6+8] - $s5 = [$s4+0] - $s3 = [$s5+80] - $s5 = $s6 + $s5 = $s4 + $s4 = [$s5+0] + $s3 = [$s4+80] + $s4 = $s6 + $s2 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s4 - $a1 = $s5 + $a0 = $s5 + $a1 = $s2 call $s3 $t3 = local[8] $t4 = local[9] @@ -2902,15 +3670,19 @@ if378_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - goto :if378_end -if378_else: - $s5 = 0 -if378_end: - $s7 = $s7 - $s2 = [$s7+0] - $s3 = [$s2+32] + $s4 = $v0 + $s2 = $s4 + $s4 = $s2 + goto :if736_end +if736_else: + $s2 = 0 + $s3 = $s2 + $s4 = $s3 +if736_end: + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s2 = [$s3+32] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2918,18 +3690,20 @@ if378_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 + $s3 = $v0 + $s2 = $s3 $s3 = $s2 - if0 $s3 goto :if389_else -if389_body: - $s7 = $s7 + if0 $s3 goto :if756_else +if756_body: + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] $s2 = [$s3+16] local[8] = $t3 @@ -2947,11 +3721,14 @@ if389_body: $t7 = local[12] $t8 = local[13] $s3 = $v0 - [$s6+4] = $s3 - $s3 = [$s6+4] + $s2 = $s3 + [$s6+4] = $s2 + $s2 = [$s6+4] + $s3 = $s2 $s2 = [$s3+0] $s7 = [$s2+80] $s2 = $s6 + $s6 = $s2 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -2959,7 +3736,7 @@ if389_body: local[12] = $t7 local[13] = $t8 $a0 = $s3 - $a1 = $s2 + $a1 = $s6 call $s7 $t3 = local[8] $t4 = local[9] @@ -2967,14 +3744,19 @@ if389_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - goto :if389_end -if389_else: - $s5 = 0 -if389_end: - $s5 = 0 - $v0 = $s5 + $s2 = $v0 + $s6 = $s2 + $s4 = $s6 + goto :if756_end +if756_else: + $s6 = 0 + $s2 = $s6 + $s4 = $s2 +if756_end: + $s2 = 0 + $s4 = $s2 + $s2 = $s4 + $v0 = $s2 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -2995,7 +3777,8 @@ func MyVisitor_visit [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = $a1 - $s7 = $s7 + $s5 = $s7 + $s7 = $s5 $s5 = [$s7+0] $s4 = [$s5+28] local[8] = $t3 @@ -3014,11 +3797,13 @@ func MyVisitor_visit [in 0, out 0, local 14] $t8 = local[13] $s5 = $v0 $s4 = $s5 - if0 $s4 goto :if401_else -if401_body: - $s7 = $s7 - $s4 = [$s7+0] - $s5 = [$s4+12] + $s5 = $s4 + if0 $s5 goto :if779_else +if779_body: + $s5 = $s7 + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+12] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -3026,27 +3811,30 @@ if401_body: 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] - $s4 = $v0 + $s5 = $v0 + $s4 = $s5 [$s6+12] = $s4 $s4 = [$s6+12] - $s5 = [$s4+0] - $s3 = [$s5+80] - $s5 = $s6 + $s5 = $s4 + $s4 = [$s5+0] + $s3 = [$s4+80] + $s4 = $s6 + $s2 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s4 - $a1 = $s5 + $a0 = $s5 + $a1 = $s2 call $s3 $t3 = local[8] $t4 = local[9] @@ -3054,15 +3842,19 @@ if401_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 - $s5 = $s2 - goto :if401_end -if401_else: - $s5 = 0 -if401_end: - $s7 = $s7 - $s2 = [$s7+0] - $s3 = [$s2+20] + $s4 = $v0 + $s2 = $s4 + $s4 = $s2 + goto :if779_end +if779_else: + $s2 = 0 + $s3 = $s2 + $s4 = $s3 +if779_end: + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s2 = [$s3+20] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -3070,17 +3862,19 @@ if401_end: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 + $s3 = $v0 + $s2 = $s3 $s3 = $s2 PrintIntS($s3 ) - $s7 = $s7 + $s3 = $s7 + $s7 = $s3 $s3 = [$s7+0] $s2 = [$s3+32] local[8] = $t3 @@ -3099,11 +3893,13 @@ if401_end: $t8 = local[13] $s3 = $v0 $s2 = $s3 - if0 $s2 goto :if416_else -if416_body: - $s7 = $s7 - $s2 = [$s7+0] - $s3 = [$s2+16] + $s3 = $s2 + if0 $s3 goto :if805_else +if805_body: + $s3 = $s7 + $s7 = $s3 + $s3 = [$s7+0] + $s2 = [$s3+16] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -3111,27 +3907,30 @@ if416_body: local[12] = $t7 local[13] = $t8 $a0 = $s7 - call $s3 + call $s2 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 + $s3 = $v0 + $s2 = $s3 [$s6+8] = $s2 $s2 = [$s6+8] - $s3 = [$s2+0] - $s7 = [$s3+80] - $s3 = $s6 + $s3 = $s2 + $s2 = [$s3+0] + $s7 = [$s2+80] + $s2 = $s6 + $s6 = $s2 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s2 - $a1 = $s3 + $a0 = $s3 + $a1 = $s6 call $s7 $t3 = local[8] $t4 = local[9] @@ -3139,14 +3938,19 @@ if416_body: $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s5 = $s6 - goto :if416_end -if416_else: - $s5 = 0 -if416_end: - $s5 = 0 - $v0 = $s5 + $s2 = $v0 + $s6 = $s2 + $s4 = $s6 + goto :if805_end +if805_else: + $s6 = 0 + $s2 = $s6 + $s4 = $s2 +if805_end: + $s2 = 0 + $s4 = $s2 + $s2 = $s4 + $v0 = $s2 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex29.s b/output/ex29.s new file mode 100644 index 0000000..1f8eae9 --- /dev/null +++ b/output/ex29.s @@ -0,0 +1,87 @@ +.data +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex29.vaporm b/output/ex29.vaporm index e69de29..f78e00f 100644 --- a/output/ex29.vaporm +++ b/output/ex29.vaporm @@ -0,0 +1,45 @@ +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret + + + diff --git a/output/ex30.s b/output/ex30.s new file mode 100644 index 0000000..c7f419f --- /dev/null +++ b/output/ex30.s @@ -0,0 +1,119 @@ +.data +functable_A: + A_foo +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 22 + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex30.vaporm b/output/ex30.vaporm index e69de29..5bd6709 100644 --- a/output/ex30.vaporm +++ b/output/ex30.vaporm @@ -0,0 +1,67 @@ +const functable_A + :A_foo +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func A_foo [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = 22 + $s6 = $s7 + $s7 = $s6 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret diff --git a/output/ex31.s b/output/ex31.s new file mode 100644 index 0000000..90309ff --- /dev/null +++ b/output/ex31.s @@ -0,0 +1,158 @@ +.data +functable_A: + A_foo + A_bar +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 22 + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_bar: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 42 + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex31.vaporm b/output/ex31.vaporm index e69de29..7b89ca0 100644 --- a/output/ex31.vaporm +++ b/output/ex31.vaporm @@ -0,0 +1,96 @@ +const functable_A + :A_foo + :A_bar +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = HeapAllocZ(8 ) + [$s7+0] = :functable_A + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func A_foo [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = 22 + $s6 = $s7 + $s7 = $s6 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func A_bar [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = 42 + $s6 = $s7 + $s7 = $s6 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret diff --git a/output/ex32.s b/output/ex32.s new file mode 100644 index 0000000..1950697 --- /dev/null +++ b/output/ex32.s @@ -0,0 +1,162 @@ +.data +functable_A: + A_foo +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 12 + move $s4 $s7 + li $s7 14 + move $s3 $s7 + li $s7 15 + move $s2 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + move $a2 $s3 + move $a3 $s2 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s2 $s7 + move $s7 $s2 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s3 $a3 + li $s4 22 + move $s3 $s4 + move $s4 $s3 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex32.vaporm b/output/ex32.vaporm index e69de29..f7d8a98 100644 --- a/output/ex32.vaporm +++ b/output/ex32.vaporm @@ -0,0 +1,106 @@ +const functable_A + :A_foo +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = HeapAllocZ(8 ) + [$s7+0] = :functable_A + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 + $s7 = [$s6+0] + $s5 = [$s7+0] + $s7 = 12 + $s4 = $s7 + $s7 = 14 + $s3 = $s7 + $s7 = 15 + $s2 = $s7 + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s6 + $a1 = $s4 + $a2 = $s3 + $a3 = $s2 + call $s5 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s7 = $v0 + $s2 = $s7 + $s7 = $s2 + PrintIntS($s7 ) + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func A_foo [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $a2 + $s3 = $a3 + $s4 = 22 + $s3 = $s4 + $s4 = $s3 + $v0 = $s4 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret diff --git a/output/ex33.s b/output/ex33.s new file mode 100644 index 0000000..e278af7 --- /dev/null +++ b/output/ex33.s @@ -0,0 +1,239 @@ +.data +functable_A: + A_foo + A_bar +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 16 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 0 + li $s4 1 + move $a0 $s7 + move $t9 $s4 + sub $s3 $a0 $t9 + move $s4 $s3 + li $s3 400 + move $s7 $s3 + li $s3 6 + li $s2 7 + move $a0 $s3 + move $t9 $s2 + mul $s1 $a0 $t9 + move $s2 $s1 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + move $a2 $s7 + move $a3 $s2 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s1 $v0 + move $s2 $s1 + move $s1 $s2 + move $a0 $s1 + jal _print + move $s1 $s6 + move $s6 $s1 + lw $s1 0($s6) + lw $s2 0($s1) + li $s1 0 + li $s7 1 + move $a0 $s1 + move $t9 $s7 + add $s4 $a0 $t9 + move $s7 $s4 + li $s4 400 + move $s1 $s4 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + move $a2 $s1 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s1 $s4 + move $s4 $s1 + move $a0 $s4 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + li $s4 3 + move $s6 $s4 + sw $s6 0($s5) + li $s6 22 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_bar: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s3 $a3 + li $s4 6 + move $s3 $s4 + move $s4 $s3 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex33.vaporm b/output/ex33.vaporm index a0164ce..1a3c274 100644 --- a/output/ex33.vaporm +++ b/output/ex33.vaporm @@ -13,18 +13,22 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(16 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+4] $s7 = 0 $s4 = 1 $s3 = Sub($s7 $s4 ) - $s4 = 6 - $s7 = 7 - $s2 = MulS($s4 $s7 ) - $s1 = $s3 - $s1 = 400 - $s1 = $s2 + $s4 = $s3 + $s3 = 400 + $s7 = $s3 + $s3 = 6 + $s2 = 7 + $s1 = MulS($s3 $s2 ) + $s2 = $s1 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -34,7 +38,7 @@ func Main [in 0, out 0, local 14] $a0 = $s6 $a1 = $s4 $a2 = $s7 - $a3 = $s1 + $a3 = $s2 call $s5 $t3 = local[8] $t4 = local[9] @@ -42,10 +46,12 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s2 = $v0 + $s1 = $v0 + $s2 = $s1 $s1 = $s2 PrintIntS($s1 ) - $s6 = $s6 + $s1 = $s6 + $s6 = $s1 $s1 = [$s6+0] $s2 = [$s1+0] $s1 = 0 @@ -53,6 +59,7 @@ func Main [in 0, out 0, local 14] $s4 = Add($s1 $s7 ) $s7 = $s4 $s4 = 400 + $s1 = $s4 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -61,7 +68,7 @@ func Main [in 0, out 0, local 14] local[13] = $t8 $a0 = $s6 $a1 = $s7 - $a2 = $s4 + $a2 = $s1 call $s2 $t3 = local[8] $t4 = local[9] @@ -69,7 +76,8 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s1 = $v0 + $s4 = $v0 + $s1 = $s4 $s4 = $s1 PrintIntS($s4 ) $s0 = local[0] @@ -93,9 +101,13 @@ func A_foo [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = $a2 - [$s5+8] = 3 - $s5 = 22 - $v0 = $s5 + $s4 = 3 + $s6 = $s4 + [$s5+8] = $s6 + $s6 = 22 + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -119,6 +131,8 @@ func A_bar [in 0, out 0, local 14] $s7 = $a2 $s3 = $a3 $s4 = 6 + $s3 = $s4 + $s4 = $s3 $v0 = $s4 $s0 = local[0] $s1 = local[1] diff --git a/output/ex34.s b/output/ex34.s new file mode 100644 index 0000000..71005cb --- /dev/null +++ b/output/ex34.s @@ -0,0 +1,162 @@ +.data +functable_A: + A_foo +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + li $s7 1 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 2 + move $s4 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + li $s7 42 + move $s6 $s7 + sw $s6 0($s5) + lw $s6 0($s5) + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex34.vaporm b/output/ex34.vaporm index 28464c6..9efa4fc 100644 --- a/output/ex34.vaporm +++ b/output/ex34.vaporm @@ -12,12 +12,18 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(8 ) [$s7+0] = :functable_A $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = 1 + $s5 = $s7 + $s7 = $s5 PrintIntS($s7 ) - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] $s7 = 2 + $s4 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -25,7 +31,7 @@ func Main [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -33,7 +39,8 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s7 = $v0 + $s4 = $s7 $s7 = $s4 PrintIntS($s7 ) $s0 = local[0] @@ -54,11 +61,15 @@ func A_foo [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+4] = 42 - $s7 = [$s6+4] - $v0 = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = 42 + $s6 = $s7 + [$s5+4] = $s6 + $s6 = [$s5+4] + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex35.s b/output/ex35.s new file mode 100644 index 0000000..37907a5 --- /dev/null +++ b/output/ex35.s @@ -0,0 +1,151 @@ +.data +functable_Fac: + Fac_ComputeFac +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Fac + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 10 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Fac_ComputeFac: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + li $s7 4 + move $s5 $s7 + move $s7 $s5 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex35.vaporm b/output/ex35.vaporm index 4bc2307..292192c 100644 --- a/output/ex35.vaporm +++ b/output/ex35.vaporm @@ -12,17 +12,19 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_Fac $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] - $s7 = 10 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + $s6 = 10 + $s4 = $s6 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 - $a1 = $s7 + $a0 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -30,9 +32,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 - $s7 = $s4 - PrintIntS($s7 ) + $s6 = $v0 + $s4 = $s6 + $s6 = $s4 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -54,6 +57,8 @@ func Fac_ComputeFac [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = 4 + $s5 = $s7 + $s7 = $s5 $v0 = $s7 $s0 = local[0] $s1 = local[1] diff --git a/output/ex36.s b/output/ex36.s new file mode 100644 index 0000000..8d76c8b --- /dev/null +++ b/output/ex36.s @@ -0,0 +1,157 @@ +.data +functable_Fac: + Fac_ComputeFac +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Fac + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 10 + move $s4 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Fac_ComputeFac: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + li $s5 4 + move $s6 $s5 + move $s5 $s6 + move $s6 $s5 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex36.vaporm b/output/ex36.vaporm index 7018dac..c381aed 100644 --- a/output/ex36.vaporm +++ b/output/ex36.vaporm @@ -12,10 +12,14 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_Fac $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] $s7 = 10 + $s4 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -23,7 +27,7 @@ func Main [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -31,7 +35,8 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s7 = $v0 + $s4 = $s7 $s7 = $s4 PrintIntS($s7 ) $s0 = local[0] @@ -52,11 +57,15 @@ func Fac_ComputeFac [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s5 = $a0 - $s6 = $a1 - $s7 = 4 - $s5 = $s7 - $v0 = $s5 + $s6 = $a0 + $s7 = $a1 + $s5 = 4 + $s6 = $s5 + $s5 = $s6 + $s6 = $s5 + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex37.s b/output/ex37.s new file mode 100644 index 0000000..91bc963 --- /dev/null +++ b/output/ex37.s @@ -0,0 +1,172 @@ +.data +functable_A: + A_foo +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 0 + move $s6 $s7 + move $s7 $s6 +while11_test: + move $s6 $s7 + li $s2 10 + move $a0 $s6 + move $t9 $s2 + slt $s3 $a0 $t9 + move $s0 $s3 + move $s1 $s0 + beqz $s1 while11_end +while11_body: + move $t7 $s7 + li $s5 1 + move $a0 $t7 + move $t9 $s5 + add $t6 $a0 $t9 + move $s4 $t6 + move $s7 $s4 + j while11_test +while11_end: + move $t6 $s7 + move $s7 $t6 + move $t6 $s7 + move $v0 $t6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex37.vaporm b/output/ex37.vaporm index d3dfb82..6097b37 100644 --- a/output/ex37.vaporm +++ b/output/ex37.vaporm @@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - PrintIntS($s5 ) + $s7 = $s5 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -52,21 +56,27 @@ func A_foo [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = 0 -while5_test: $s6 = $s7 - $s4 = 10 - $s5 = LtS($s6 $s4 ) - $s2 = $s5 - if0 $s2 goto :while5_end -while5_body: - $s0 = $s7 - $s1 = 1 - $s3 = Add($s0 $s1 ) - $s7 = $s3 - goto :while5_test -while5_end: - $s0 = $s7 - $v0 = $s0 + $s7 = $s6 +while11_test: + $s6 = $s7 + $s2 = 10 + $s3 = LtS($s6 $s2 ) + $s0 = $s3 + $s1 = $s0 + if0 $s1 goto :while11_end +while11_body: + $t7 = $s7 + $s5 = 1 + $t6 = Add($t7 $s5 ) + $s4 = $t6 + $s7 = $s4 + goto :while11_test +while11_end: + $t6 = $s7 + $s7 = $t6 + $t6 = $s7 + $v0 = $t6 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex38.s b/output/ex38.s new file mode 100644 index 0000000..91bc963 --- /dev/null +++ b/output/ex38.s @@ -0,0 +1,172 @@ +.data +functable_A: + A_foo +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 0 + move $s6 $s7 + move $s7 $s6 +while11_test: + move $s6 $s7 + li $s2 10 + move $a0 $s6 + move $t9 $s2 + slt $s3 $a0 $t9 + move $s0 $s3 + move $s1 $s0 + beqz $s1 while11_end +while11_body: + move $t7 $s7 + li $s5 1 + move $a0 $t7 + move $t9 $s5 + add $t6 $a0 $t9 + move $s4 $t6 + move $s7 $s4 + j while11_test +while11_end: + move $t6 $s7 + move $s7 $t6 + move $t6 $s7 + move $v0 $t6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex38.vaporm b/output/ex38.vaporm index d3dfb82..6097b37 100644 --- a/output/ex38.vaporm +++ b/output/ex38.vaporm @@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - PrintIntS($s5 ) + $s7 = $s5 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -52,21 +56,27 @@ func A_foo [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = 0 -while5_test: $s6 = $s7 - $s4 = 10 - $s5 = LtS($s6 $s4 ) - $s2 = $s5 - if0 $s2 goto :while5_end -while5_body: - $s0 = $s7 - $s1 = 1 - $s3 = Add($s0 $s1 ) - $s7 = $s3 - goto :while5_test -while5_end: - $s0 = $s7 - $v0 = $s0 + $s7 = $s6 +while11_test: + $s6 = $s7 + $s2 = 10 + $s3 = LtS($s6 $s2 ) + $s0 = $s3 + $s1 = $s0 + if0 $s1 goto :while11_end +while11_body: + $t7 = $s7 + $s5 = 1 + $t6 = Add($t7 $s5 ) + $s4 = $t6 + $s7 = $s4 + goto :while11_test +while11_end: + $t6 = $s7 + $s7 = $t6 + $t6 = $s7 + $v0 = $t6 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex39.s b/output/ex39.s new file mode 100644 index 0000000..35002fa --- /dev/null +++ b/output/ex39.s @@ -0,0 +1,121 @@ +.data +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $s7 0 + move $s6 $s7 + move $s7 $s6 + li $s6 2 + move $s5 $s7 + move $a0 $s6 + move $t9 $s5 + mul $s4 $a0 $t9 + move $s5 $s4 + move $s4 $s5 + move $s5 $s4 + move $s6 $s7 + move $a0 $s5 + move $t9 $s6 + add $s3 $a0 $t9 + move $s6 $s3 + move $s4 $s6 + move $s6 $s4 + li $s3 1 + move $a0 $s6 + move $t9 $s3 + sub $s5 $a0 $t9 + move $s3 $s5 + move $s4 $s3 + move $s3 $s7 + move $s7 $s3 + move $s3 $s7 + move $a0 $s3 + jal _print + move $s3 $s4 + move $s4 $s3 + move $s3 $s4 + move $a0 $s3 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex39.vaporm b/output/ex39.vaporm index 0fa4db7..15c6c79 100644 --- a/output/ex39.vaporm +++ b/output/ex39.vaporm @@ -8,22 +8,31 @@ func Main [in 0, out 0, local 14] local[6] = $s6 local[7] = $s7 $s7 = 0 + $s6 = $s7 + $s7 = $s6 $s6 = 2 $s5 = $s7 $s4 = MulS($s6 $s5 ) $s5 = $s4 $s4 = $s5 + $s5 = $s4 $s6 = $s7 - $s3 = Add($s4 $s6 ) - $s5 = $s3 + $s3 = Add($s5 $s6 ) + $s6 = $s3 + $s4 = $s6 + $s6 = $s4 + $s3 = 1 + $s5 = Sub($s6 $s3 ) $s3 = $s5 - $s6 = 1 - $s4 = Sub($s3 $s6 ) - $s5 = $s4 - $s4 = $s7 - PrintIntS($s4 ) - $s4 = $s5 - PrintIntS($s4 ) + $s4 = $s3 + $s3 = $s7 + $s7 = $s3 + $s3 = $s7 + PrintIntS($s3 ) + $s3 = $s4 + $s4 = $s3 + $s3 = $s4 + PrintIntS($s3 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex40.s b/output/ex40.s new file mode 100644 index 0000000..c8200a1 --- /dev/null +++ b/output/ex40.s @@ -0,0 +1,164 @@ +.data +functable_A: + A_add_two +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 12 + move $s4 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_add_two: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + li $s7 2 + move $s4 $s7 + sw $s4 0($s5) + move $s4 $s6 + lw $s7 0($s5) + move $a0 $s4 + move $t9 $s7 + add $s5 $a0 $t9 + move $s7 $s5 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex40.vaporm b/output/ex40.vaporm index 5ee4e28..ca36115 100644 --- a/output/ex40.vaporm +++ b/output/ex40.vaporm @@ -12,10 +12,14 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(8 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] $s7 = 12 + $s4 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -23,7 +27,7 @@ func Main [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -31,7 +35,8 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s7 = $v0 + $s4 = $s7 $s7 = $s4 PrintIntS($s7 ) $s0 = local[0] @@ -52,15 +57,20 @@ func A_add_two [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+4] = 2 - $s5 = $s7 - $s4 = [$s6+4] - $s6 = Add($s5 $s4 ) + $s5 = $a0 + $s6 = $a1 + $s7 = 2 + $s4 = $s7 + [$s5+4] = $s4 + $s4 = $s6 + $s7 = [$s5+4] + $s5 = Add($s4 $s7 ) + $s7 = $s5 + $s6 = $s7 $s7 = $s6 $s6 = $s7 - $v0 = $s6 + $s7 = $s6 + $v0 = $s7 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex41.s b/output/ex41.s new file mode 100644 index 0000000..9e281c1 --- /dev/null +++ b/output/ex41.s @@ -0,0 +1,228 @@ +.data +functable_A: + A_foo +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 92 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 0 + move $s6 $s7 + move $s7 $s6 + li $s6 0 + move $s5 $s6 + lw $t0 -68($fp) + move $t0 $s5 + sw $t0 -68($fp) +while13_test: + move $s5 $s7 + lw $t0 -76($fp) + li $t0 10 + sw $t0 -76($fp) + lw $t0 -80($fp) + lw $t1 -76($fp) + move $a0 $s5 + move $t9 $t1 + slt $t0 $a0 $t9 + sw $t1 -76($fp) + sw $t0 -80($fp) + lw $t0 -72($fp) + lw $t1 -80($fp) + move $t0 $t1 + sw $t1 -80($fp) + sw $t0 -72($fp) + lw $t0 -72($fp) + move $s0 $t0 + sw $t0 -72($fp) + beqz $s0 while13_end +while13_body: +while19_test: + lw $t0 -92($fp) + lw $t1 -68($fp) + move $t0 $t1 + sw $t1 -68($fp) + sw $t0 -92($fp) + li $s3 100 + lw $t0 -84($fp) + lw $t1 -92($fp) + move $a0 $t1 + move $t9 $s3 + slt $t0 $a0 $t9 + sw $t1 -92($fp) + sw $t0 -84($fp) + lw $t0 -84($fp) + move $s4 $t0 + sw $t0 -84($fp) + move $s2 $s4 + beqz $s2 while19_end +while19_body: + lw $t0 -68($fp) + move $t4 $t0 + sw $t0 -68($fp) + li $t3 1 + move $a0 $t4 + move $t9 $t3 + add $s6 $a0 $t9 + move $t5 $s6 + lw $t0 -68($fp) + move $t0 $t5 + sw $t0 -68($fp) + j while19_test +while19_end: + move $s1 $s7 + lw $t0 -88($fp) + li $t0 1 + sw $t0 -88($fp) + lw $t0 -88($fp) + move $a0 $s1 + move $t9 $t0 + add $t7 $a0 $t9 + sw $t0 -88($fp) + move $t6 $t7 + move $s7 $t6 + j while13_test +while13_end: + lw $t0 -68($fp) + move $t6 $t0 + sw $t0 -68($fp) + move $t7 $t6 + move $t6 $t7 + move $v0 $t6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 92 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex41.vaporm b/output/ex41.vaporm index 54baf4f..d86b4d1 100644 --- a/output/ex41.vaporm +++ b/output/ex41.vaporm @@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - PrintIntS($s5 ) + $s7 = $s5 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -41,7 +45,7 @@ func Main [in 0, out 0, local 14] $s6 = local[6] $s7 = local[7] ret -func A_foo [in 0, out 0, local 17] +func A_foo [in 0, out 0, local 21] local[0] = $s0 local[1] = $s1 local[2] = $s2 @@ -52,53 +56,79 @@ func A_foo [in 0, out 0, local 17] local[7] = $s7 $s6 = $a0 $s7 = 0 + $s6 = $s7 + $s7 = $s6 + $s6 = 0 + $s5 = $s6 $t0 = local[14] - $t0 = 0 + $t0 = $s5 local[14] = $t0 -while5_test: +while13_test: $s5 = $s7 - $t7 = 10 - $s1 = LtS($s5 $t7 ) - $s0 = $s1 - if0 $s0 goto :while5_end -while5_body: -while10_test: - $t0 = local[14] - $t6 = $t0 - local[14] = $t0 + $t0 = local[16] + $t0 = 10 + local[16] = $t0 + $t0 = local[17] + $t1 = local[16] + $t0 = LtS($s5 $t1 ) + local[16] = $t1 + local[17] = $t0 $t0 = local[15] - $t0 = 100 + $t1 = local[17] + $t0 = $t1 + local[17] = $t1 local[15] = $t0 $t0 = local[15] - $t5 = LtS($t6 $t0 ) + $s0 = $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: + if0 $s0 goto :while13_end +while13_body: +while19_test: + $t0 = local[20] + $t1 = local[14] + $t0 = $t1 + local[14] = $t1 + local[20] = $t0 + $s3 = 100 + $t0 = local[18] + $t1 = local[20] + $t0 = LtS($t1 $s3 ) + local[20] = $t1 + local[18] = $t0 + $t0 = local[18] + $s4 = $t0 + local[18] = $t0 + $s2 = $s4 + if0 $s2 goto :while19_end +while19_body: $t0 = local[14] $t4 = $t0 local[14] = $t0 $t3 = 1 $s6 = Add($t4 $t3 ) + $t5 = $s6 $t0 = local[14] - $t0 = $s6 + $t0 = $t5 local[14] = $t0 - goto :while10_test -while10_end: - $s4 = $s7 - $s2 = 1 - $s3 = Add($s4 $s2 ) - $s7 = $s3 - goto :while5_test -while5_end: + goto :while19_test +while19_end: + $s1 = $s7 + $t0 = local[19] + $t0 = 1 + local[19] = $t0 + $t0 = local[19] + $t7 = Add($s1 $t0 ) + local[19] = $t0 + $t6 = $t7 + $s7 = $t6 + goto :while13_test +while13_end: $t0 = local[14] - $t5 = $t0 + $t6 = $t0 local[14] = $t0 - $v0 = $t5 + $t7 = $t6 + $t6 = $t7 + $v0 = $t6 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex42.s b/output/ex42.s new file mode 100644 index 0000000..b716f06 --- /dev/null +++ b/output/ex42.s @@ -0,0 +1,164 @@ +.data +functable_A: + A_Init +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 72 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 24 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s6 $s6 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 42 + li $s4 10000 + li $s3 1 + li $s2 156 + li $s1 123 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s7 + move $a2 $s4 + move $a3 $s3 + sw $s2 -72($fp) + sw $s1 -68($fp) + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s0 $v0 + move $s1 $s0 + move $a0 $s1 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 72 + jr $ra +A_Init: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s3 $a3 + lw $s4 0($fp) + lw $s2 4($fp) + sw $s6 0($s5) + sw $s7 0($s5) + sw $s3 0($s5) + sw $s4 0($s5) + sw $s2 0($s5) + li $s2 1 + move $v0 $s2 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex43.s b/output/ex43.s new file mode 100644 index 0000000..32c51ea --- /dev/null +++ b/output/ex43.s @@ -0,0 +1,175 @@ +.data +functable_A: + A_foo +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 4 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 1 + move $s6 $s7 + move $s7 $s6 + li $s6 5 + move $s5 $s7 + move $a0 $s6 + move $t9 $s5 + slt $s4 $a0 $t9 + move $s5 $s4 + move $s4 $s5 + beqz $s4 if11_else +if11_body: + li $s4 1 + move $s5 $s4 + move $s4 $s5 + move $a0 $s4 + jal _print + j if11_end +if11_else: + li $s4 0 + move $s5 $s4 + move $s4 $s5 + move $a0 $s4 + jal _print +if11_end: + move $s4 $s7 + move $s7 $s4 + move $s4 $s7 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex43.vaporm b/output/ex43.vaporm index 93d7ecb..95edeec 100644 --- a/output/ex43.vaporm +++ b/output/ex43.vaporm @@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(4 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -31,7 +34,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - PrintIntS($s5 ) + $s7 = $s5 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -52,21 +56,30 @@ func A_foo [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = 1 + $s6 = $s7 + $s7 = $s6 $s6 = 5 $s5 = $s7 $s4 = LtS($s6 $s5 ) $s5 = $s4 - if0 $s5 goto :if5_else -if5_body: - $s5 = 1 - PrintIntS($s5 ) - goto :if5_end -if5_else: - $s5 = 0 - PrintIntS($s5 ) -if5_end: - $s5 = $s7 - $v0 = $s5 + $s4 = $s5 + if0 $s4 goto :if11_else +if11_body: + $s4 = 1 + $s5 = $s4 + $s4 = $s5 + PrintIntS($s4 ) + goto :if11_end +if11_else: + $s4 = 0 + $s5 = $s4 + $s4 = $s5 + PrintIntS($s4 ) +if11_end: + $s4 = $s7 + $s7 = $s4 + $s4 = $s7 + $v0 = $s4 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex44.s b/output/ex44.s new file mode 100644 index 0000000..7f3786b --- /dev/null +++ b/output/ex44.s @@ -0,0 +1,160 @@ +.data +functable_Operator: + Operator_compute +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Operator + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s5 $s6 + move $s6 $s5 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Operator_compute: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 1 + li $s5 0 + li $a0 1 + move $t9 $s7 +NULL $s4 $a0 $t9 + li $a0 1 + move $t9 $s5 +NULL $s7 $a0 $t9 + move $a0 $s4 + move $t9 $s7 +NULL $s5 $a0 $t9 + move $s7 $s5 + sw $s7 0($s6) + li $s7 0 + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex44.vaporm b/output/ex44.vaporm index b2537e8..b36b539 100644 --- a/output/ex44.vaporm +++ b/output/ex44.vaporm @@ -12,15 +12,16 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(8 ) [$s7+0] = :functable_Operator $s6 = $s7 - $s7 = [$s6+0] - $s5 = [$s7+0] + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s6 + $a0 = $s7 call $s5 $t3 = local[8] $t4 = local[9] @@ -28,9 +29,10 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s7 = $v0 - $s5 = $s7 - PrintIntS($s5 ) + $s6 = $v0 + $s5 = $s6 + $s6 = $s5 + PrintIntS($s6 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -55,9 +57,12 @@ func Operator_compute [in 0, out 0, local 14] $s4 = Eq(1 $s7 ) $s7 = Eq(1 $s5 ) $s5 = Eq($s4 $s7 ) - [$s6+4] = $s5 - $s5 = 0 - $v0 = $s5 + $s7 = $s5 + [$s6+4] = $s7 + $s7 = 0 + $s6 = $s7 + $s7 = $s6 + $v0 = $s7 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex45.s b/output/ex45.s new file mode 100644 index 0000000..dda2898 --- /dev/null +++ b/output/ex45.s @@ -0,0 +1,175 @@ +.data +functable_A: + A_run +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $s5 $s7 + move $s7 $s5 + move $s5 $s7 + move $a0 $s5 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_run: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 10 + move $s5 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $AllocArray + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + sw $s7 0($s6) + lw $s7 0($s6) + move $s6 $s7 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex45.vaporm b/output/ex45.vaporm index ed1c490..a6e35af 100644 --- a/output/ex45.vaporm +++ b/output/ex45.vaporm @@ -12,7 +12,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(8 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -32,7 +35,10 @@ func Main [in 0, out 0, local 14] $s7 = $v0 $s5 = $s7 $s7 = $s5 - PrintIntS($s7 ) + $s5 = $s7 + $s7 = $s5 + $s5 = $s7 + PrintIntS($s5 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -52,13 +58,15 @@ func A_run [in 0, out 0, local 14] local[6] = $s6 local[7] = $s7 $s6 = $a0 + $s7 = 10 + $s5 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = 10 + $a0 = $s5 call :AllocArray $t3 = local[8] $t4 = local[9] @@ -67,9 +75,13 @@ func A_run [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s7 = $v0 + $s5 = $s7 + $s7 = $s5 [$s6+4] = $s7 $s7 = [$s6+4] - $s6 = [$s7+0] + $s6 = $s7 + $s7 = [$s6+0] + $s6 = $s7 $s7 = $s6 $v0 = $s7 $s0 = local[0] diff --git a/output/ex46.s b/output/ex46.s new file mode 100644 index 0000000..43c98f7 --- /dev/null +++ b/output/ex46.s @@ -0,0 +1,268 @@ +.data +functable_A: + A_foo + A_bar +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 16 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 10 + move $s4 $s7 + li $s7 20 + move $s3 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + move $a2 $s3 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s3 $s7 + move $s7 $s3 + move $s3 $s7 + move $s7 $s3 + move $s3 $s7 + move $a0 $s3 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 0 + move $s5 $s7 + sw $s5 0($s6) + li $s5 1 + li $s7 2 + move $a0 $s5 + move $t9 $s7 + add $s4 $a0 $t9 + move $s7 $s4 + sw $s7 0($s6) + lw $s7 0($s6) + lw $s4 0($s6) + move $a0 $s7 + move $t9 $s4 + add $s5 $a0 $t9 + move $s4 $s5 + sw $s4 0($s6) + lw $s4 0($s6) + move $s6 $s4 + move $s4 $s6 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_bar: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + move $s4 $s6 + move $s6 $s4 + sw $s6 0($s5) + move $s6 $s7 + move $s7 $s6 + sw $s7 0($s5) + lw $s7 0($s5) + lw $s6 0($s5) + move $a0 $s7 + move $t9 $s6 + mul $s5 $a0 $t9 + move $s6 $s5 + move $s5 $s6 + move $s6 $s5 + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex46.vaporm b/output/ex46.vaporm index db39b37..6d0124f 100644 --- a/output/ex46.vaporm +++ b/output/ex46.vaporm @@ -13,7 +13,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(16 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -32,10 +35,12 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - PrintIntS($s5 ) - $s6 = $s6 - $s5 = [$s6+0] - $s7 = [$s5+0] + $s7 = $s5 + PrintIntS($s7 ) + $s7 = $s6 + $s6 = $s7 + $s7 = [$s6+0] + $s5 = [$s7+0] local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -43,21 +48,25 @@ func Main [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] - $s5 = $v0 + $s7 = $v0 + $s5 = $s7 $s7 = $s5 PrintIntS($s7 ) - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+4] $s7 = 10 - $s4 = 20 + $s4 = $s7 + $s7 = 20 + $s3 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -65,8 +74,8 @@ func Main [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 - $a2 = $s4 + $a1 = $s4 + $a2 = $s3 call $s5 $t3 = local[8] $t4 = local[9] @@ -74,9 +83,12 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s3 = $v0 - $s4 = $s3 - $s3 = $s4 + $s7 = $v0 + $s3 = $s7 + $s7 = $s3 + $s3 = $s7 + $s7 = $s3 + $s3 = $s7 PrintIntS($s3 ) $s0 = local[0] $s1 = local[1] @@ -96,18 +108,24 @@ func A_foo [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s7 = $a0 - [$s7+12] = 0 - $s6 = 1 - $s5 = 2 - $s4 = Add($s6 $s5 ) - [$s7+8] = $s4 - $s4 = [$s7+8] - $s5 = [$s7+12] - $s6 = Add($s4 $s5 ) - [$s7+12] = $s6 - $s6 = [$s7+12] - $v0 = $s6 + $s6 = $a0 + $s7 = 0 + $s5 = $s7 + [$s6+12] = $s5 + $s5 = 1 + $s7 = 2 + $s4 = Add($s5 $s7 ) + $s7 = $s4 + [$s6+8] = $s7 + $s7 = [$s6+8] + $s4 = [$s6+12] + $s5 = Add($s7 $s4 ) + $s4 = $s5 + [$s6+12] = $s4 + $s4 = [$s6+12] + $s6 = $s4 + $s4 = $s6 + $v0 = $s4 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -129,14 +147,21 @@ func A_bar [in 0, out 0, local 14] $s5 = $a0 $s6 = $a1 $s7 = $a2 + $s4 = $s6 + $s6 = $s4 [$s5+8] = $s6 + $s6 = $s7 + $s7 = $s6 [$s5+12] = $s7 $s7 = [$s5+8] $s6 = [$s5+12] $s5 = MulS($s7 $s6 ) $s6 = $s5 $s5 = $s6 - $v0 = $s5 + $s6 = $s5 + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex47.s b/output/ex47.s new file mode 100644 index 0000000..9009eb4 --- /dev/null +++ b/output/ex47.s @@ -0,0 +1,257 @@ +.data +functable_A: + A_set + A_get +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 12 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 42 + move $s4 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s4 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_set: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + li $s7 12 + move $s4 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + jalr $AllocArray + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + sw $s7 0($s5) + lw $s7 0($s5) + li $s4 5 + move $s3 $s4 + move $a0 $s3 + li $t9 4 + mul $s4 $a0 $t9 + move $a0 $s4 + li $t9 4 + add $s4 $a0 $t9 + move $a0 $s7 + move $t9 $s4 + add $s4 $a0 $t9 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s4) + lw $s6 0($s5) + move $s5 $s6 + lw $s6 0($s5) + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_get: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + lw $s6 0($s7) + move $s7 $s6 + li $s6 5 + move $a0 $s6 + li $t9 4 + mul $s5 $a0 $t9 + move $a0 $s5 + li $t9 4 + add $s5 $a0 $t9 + move $a0 $s7 + move $t9 $s5 + add $s5 $a0 $t9 + lw $s7 0($s5) + move $s5 $s7 + move $s7 $s5 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex47.vaporm b/output/ex47.vaporm index 75c498c..71ad6a5 100644 --- a/output/ex47.vaporm +++ b/output/ex47.vaporm @@ -13,10 +13,14 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(12 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] $s7 = 42 + $s4 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -24,7 +28,7 @@ func Main [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -32,10 +36,12 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s7 = $v0 + $s4 = $s7 $s7 = $s4 PrintIntS($s7 ) - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s4 = [$s7+4] local[8] = $t3 @@ -54,7 +60,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s4 = $s7 - PrintIntS($s4 ) + $s7 = $s4 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -75,13 +82,15 @@ func A_set [in 0, out 0, local 14] local[7] = $s7 $s5 = $a0 $s6 = $a1 + $s7 = 12 + $s4 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = 12 + $a0 = $s4 call :AllocArray $t3 = local[8] $t4 = local[9] @@ -90,16 +99,24 @@ func A_set [in 0, out 0, local 14] $t7 = local[12] $t8 = local[13] $s7 = $v0 + $s4 = $s7 + $s7 = $s4 [$s5+8] = $s7 $s7 = [$s5+8] - $s4 = MulS(5 4 ) + $s4 = 5 + $s3 = $s4 + $s4 = MulS($s3 4 ) $s4 = Add($s4 4 ) $s4 = Add($s7 $s4 ) + $s7 = $s6 + $s6 = $s7 [$s4+0] = $s6 - $s4 = [$s5+8] - $s5 = [$s4+0] - $s4 = $s5 - $v0 = $s4 + $s6 = [$s5+8] + $s5 = $s6 + $s6 = [$s5+0] + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -118,14 +135,17 @@ func A_get [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = [$s6+8] - $s6 = MulS(5 4 ) - $s6 = Add($s6 4 ) - $s6 = Add($s7 $s6 ) - $s7 = [$s6+0] - $s6 = $s7 - $v0 = $s6 + $s7 = $a0 + $s6 = [$s7+8] + $s7 = $s6 + $s6 = 5 + $s5 = MulS($s6 4 ) + $s5 = Add($s5 4 ) + $s5 = Add($s7 $s5 ) + $s7 = [$s5+0] + $s5 = $s7 + $s7 = $s5 + $v0 = $s7 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex48.s b/output/ex48.s new file mode 100644 index 0000000..c2aa396 --- /dev/null +++ b/output/ex48.s @@ -0,0 +1,211 @@ +.data +functable_A: + A_set + A_get +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 12 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + li $s7 42 + move $s4 $s7 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s4 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_set: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + lw $s6 0($s5) + move $s5 $s6 + move $s6 $s5 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_get: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex48.vaporm b/output/ex48.vaporm index 06fe967..be4a6c3 100644 --- a/output/ex48.vaporm +++ b/output/ex48.vaporm @@ -13,10 +13,14 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(12 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] $s7 = 42 + $s4 = $s7 local[8] = $t3 local[9] = $t4 local[10] = $t5 @@ -24,7 +28,7 @@ func Main [in 0, out 0, local 14] local[12] = $t7 local[13] = $t8 $a0 = $s6 - $a1 = $s7 + $a1 = $s4 call $s5 $t3 = local[8] $t4 = local[9] @@ -32,10 +36,12 @@ func Main [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s4 = $v0 + $s7 = $v0 + $s4 = $s7 $s7 = $s4 PrintIntS($s7 ) - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s4 = [$s7+4] local[8] = $t3 @@ -54,7 +60,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s4 = $s7 - PrintIntS($s4 ) + $s7 = $s4 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -73,11 +80,15 @@ func A_set [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s6 = $a0 - $s7 = $a1 - [$s6+8] = $s7 - $s7 = [$s6+8] - $v0 = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+8] = $s6 + $s6 = [$s5+8] + $s5 = $s6 + $s6 = $s5 + $v0 = $s6 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -98,6 +109,8 @@ func A_get [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+8] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] diff --git a/output/ex49.s b/output/ex49.s new file mode 100644 index 0000000..6eb3f62 --- /dev/null +++ b/output/ex49.s @@ -0,0 +1,189 @@ +.data +functable_A: + A_set +functable_B: + B_get + A_set +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_set: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 3 + move $s5 $s7 + sw $s5 0($s6) + li $s5 1 + move $s6 $s5 + move $s5 $s6 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +B_get: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 12 + move $s5 $s7 + sw $s5 0($s6) + lw $s5 0($s6) + move $s6 $s5 + move $s5 $s6 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex49.vaporm b/output/ex49.vaporm index 2c6d982..f7797f0 100644 --- a/output/ex49.vaporm +++ b/output/ex49.vaporm @@ -15,7 +15,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(8 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -34,7 +37,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - PrintIntS($s5 ) + $s7 = $s5 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -53,10 +57,14 @@ func A_set [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s7 = $a0 - [$s7+4] = 3 - $s7 = 1 - $v0 = $s7 + $s6 = $a0 + $s7 = 3 + $s5 = $s7 + [$s6+4] = $s5 + $s5 = 1 + $s6 = $s5 + $s5 = $s6 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -75,10 +83,14 @@ func B_get [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s7 = $a0 - [$s7+8] = 12 - $s6 = [$s7+8] - $v0 = $s6 + $s6 = $a0 + $s7 = 12 + $s5 = $s7 + [$s6+8] = $s5 + $s5 = [$s6+8] + $s6 = $s5 + $s5 = $s6 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex50.s b/output/ex50.s new file mode 100644 index 0000000..cf06f9a --- /dev/null +++ b/output/ex50.s @@ -0,0 +1,266 @@ +.data +functable_A: + A_set_get +functable_B: + B_get + B_set +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 8 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_A + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + lw $s7 0($s6) + lw $s5 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s5 $s7 + move $s7 $s5 + move $a0 $s7 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +A_set_get: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $a0 12 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_B + sw $t9 0($s7) + move $s5 $s7 + move $s7 $s5 + sw $s7 0($s6) + lw $s7 0($s6) + move $s5 $s7 + lw $s7 0($s5) + lw $s4 0($s7) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s7 $v0 + move $s4 $s7 + move $s7 $s4 + lw $s4 0($s6) + move $s5 $s4 + lw $s4 0($s5) + lw $s6 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s6 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s6 $s4 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +B_get: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +B_set: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $s7 12 + move $s5 $s7 + sw $s5 0($s6) + li $s5 1 + move $s6 $s5 + move $s5 $s6 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex50.vaporm b/output/ex50.vaporm index 1a73739..31d6f6b 100644 --- a/output/ex50.vaporm +++ b/output/ex50.vaporm @@ -15,7 +15,10 @@ func Main [in 0, out 0, local 14] $s7 = HeapAllocZ(8 ) [$s7+0] = :functable_A $s6 = $s7 - $s6 = $s6 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $s7 = [$s6+0] $s5 = [$s7+0] local[8] = $t3 @@ -34,7 +37,8 @@ func Main [in 0, out 0, local 14] $t8 = local[13] $s7 = $v0 $s5 = $s7 - PrintIntS($s5 ) + $s7 = $s5 + PrintIntS($s7 ) $s0 = local[0] $s1 = local[1] $s2 = local[2] @@ -56,17 +60,20 @@ func A_set_get [in 0, out 0, local 14] $s6 = $a0 $s7 = HeapAllocZ(12 ) [$s7+0] = :functable_B + $s5 = $s7 + $s7 = $s5 [$s6+4] = $s7 $s7 = [$s6+4] - $s5 = [$s7+0] - $s4 = [$s5+4] + $s5 = $s7 + $s7 = [$s5+0] + $s4 = [$s7+4] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s7 + $a0 = $s5 call $s4 $t3 = local[8] $t4 = local[9] @@ -74,28 +81,33 @@ func A_set_get [in 0, out 0, local 14] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s5 = $v0 - $s4 = $s5 - $s7 = [$s6+4] - $s6 = [$s7+0] - $s5 = [$s6+0] + $s7 = $v0 + $s4 = $s7 + $s7 = $s4 + $s4 = [$s6+4] + $s5 = $s4 + $s4 = [$s5+0] + $s6 = [$s4+0] local[8] = $t3 local[9] = $t4 local[10] = $t5 local[11] = $t6 local[12] = $t7 local[13] = $t8 - $a0 = $s7 - call $s5 + $a0 = $s5 + call $s6 $t3 = local[8] $t4 = local[9] $t5 = local[10] $t6 = local[11] $t7 = local[12] $t8 = local[13] - $s6 = $v0 - $s4 = $s6 + $s4 = $v0 $s6 = $s4 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 $v0 = $s6 $s0 = local[0] $s1 = local[1] @@ -117,6 +129,8 @@ func B_get [in 0, out 0, local 14] local[7] = $s7 $s6 = $a0 $s7 = [$s6+8] + $s6 = $s7 + $s7 = $s6 $v0 = $s7 $s0 = local[0] $s1 = local[1] @@ -136,10 +150,14 @@ func B_set [in 0, out 0, local 14] local[5] = $s5 local[6] = $s6 local[7] = $s7 - $s7 = $a0 - [$s7+8] = 12 - $s7 = 1 - $v0 = $s7 + $s6 = $a0 + $s7 = 12 + $s5 = $s7 + [$s6+8] = $s5 + $s5 = 1 + $s6 = $s5 + $s5 = $s6 + $v0 = $s5 $s0 = local[0] $s1 = local[1] $s2 = local[2] diff --git a/output/ex51.s b/output/ex51.s new file mode 100644 index 0000000..47070b7 --- /dev/null +++ b/output/ex51.s @@ -0,0 +1,378 @@ +.data +functable_Test: + Test_setval + Test_getval + Test_start + Test_next +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 24 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Test + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s5 $s6 + move $s6 $s5 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Test_setval: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $a2 + lw $s4 0($s5) + move $s5 $s6 + move $s6 $s5 + move $a0 $s6 + li $t9 4 + mul $s5 $a0 $t9 + move $a0 $s5 + li $t9 4 + add $s5 $a0 $t9 + move $a0 $s4 + move $t9 $s5 + add $s5 $a0 $t9 + move $s4 $s7 + move $s7 $s4 + sw $s7 0($s5) + li $s7 0 + move $s5 $s7 + move $s7 $s5 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Test_getval: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + move $s7 $a1 + lw $s5 0($s6) + move $s6 $s5 + move $s5 $s7 + move $a0 $s5 + li $t9 4 + mul $s7 $a0 $t9 + move $a0 $s7 + li $t9 4 + add $s7 $a0 $t9 + move $a0 $s6 + move $t9 $s7 + add $s7 $a0 $t9 + lw $s6 0($s7) + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Test_start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $s6 $s7 + move $s5 $s6 + move $s6 $s5 + li $s5 10 + move $s4 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s4 + jalr $AllocArray + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s5 $s4 + sw $s5 0($s7) + li $a0 24 + jal _heapAlloc + move $s5 $v0 + la $t9 functable_Test + sw $t9 0($s5) + move $s4 $s5 + move $s5 $s4 + move $s4 $s5 + move $s5 $s4 + lw $s4 0($s5) + lw $s3 0($s4) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s5 + jalr $s3 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s4 $v0 + move $s3 $s4 + sw $s3 0($s7) + move $s3 $s6 + move $s6 $s3 + lw $s3 0($s6) + lw $s4 0($s3) + li $s3 2 + move $s5 $s3 + li $s3 42 + move $s2 $s3 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s6 + move $a1 $s5 + move $a2 $s2 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s3 $v0 + move $s2 $s3 + move $s3 $s2 + move $s2 $s7 + move $s5 $s2 + sw $s5 0($s7) + lw $s5 0($s7) + move $s7 $s5 + lw $s5 0($s7) + lw $s2 0($s5) + li $s5 2 + move $s4 $s5 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s2 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + move $s3 $s4 + move $s4 $s3 + move $s3 $s4 + move $s4 $s3 + move $v0 $s4 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Test_next: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + lw $s7 0($s6) + move $s6 $s7 + move $s7 $s6 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex51.vaporm b/output/ex51.vaporm new file mode 100644 index 0000000..d25f65e --- /dev/null +++ b/output/ex51.vaporm @@ -0,0 +1,286 @@ +const functable_Test + :Test_setval + :Test_getval + :Test_start + :Test_next +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = HeapAllocZ(24 ) + [$s7+0] = :functable_Test + $s6 = $s7 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+8] + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s7 + call $s5 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s6 = $v0 + $s5 = $s6 + $s6 = $s5 + PrintIntS($s6 ) + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func Test_setval [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $a2 + $s4 = [$s5+20] + $s5 = $s6 + $s6 = $s5 + $s5 = MulS($s6 4 ) + $s5 = Add($s5 4 ) + $s5 = Add($s4 $s5 ) + $s4 = $s7 + $s7 = $s4 + [$s5+0] = $s7 + $s7 = 0 + $s5 = $s7 + $s7 = $s5 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func Test_getval [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = $a1 + $s5 = [$s6+20] + $s6 = $s5 + $s5 = $s7 + $s7 = MulS($s5 4 ) + $s7 = Add($s7 4 ) + $s7 = Add($s6 $s7 ) + $s6 = [$s7+0] + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $s6 = $s7 + $s7 = $s6 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func Test_start [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = $s7 + $s5 = $s6 + $s6 = $s5 + $s5 = 10 + $s4 = $s5 + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s4 + call :AllocArray + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s5 = $v0 + $s4 = $s5 + $s5 = $s4 + [$s7+20] = $s5 + $s5 = HeapAllocZ(24 ) + [$s5+0] = :functable_Test + $s4 = $s5 + $s5 = $s4 + $s4 = $s5 + $s5 = $s4 + $s4 = [$s5+0] + $s3 = [$s4+12] + 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] + $s4 = $v0 + $s3 = $s4 + [$s7+16] = $s3 + $s3 = $s6 + $s6 = $s3 + $s3 = [$s6+0] + $s4 = [$s3+0] + $s3 = 2 + $s5 = $s3 + $s3 = 42 + $s2 = $s3 + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s6 + $a1 = $s5 + $a2 = $s2 + call $s4 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s3 = $v0 + $s2 = $s3 + $s3 = $s2 + $s2 = $s7 + $s5 = $s2 + [$s7+16] = $s5 + $s5 = [$s7+16] + $s7 = $s5 + $s5 = [$s7+0] + $s2 = [$s5+4] + $s5 = 2 + $s4 = $s5 + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s7 + $a1 = $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 = $s4 + $s4 = $s3 + $s3 = $s4 + $s4 = $s3 + $v0 = $s4 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func Test_next [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = [$s6+16] + $s6 = $s7 + $s7 = $s6 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret diff --git a/output/ex52.s b/output/ex52.s new file mode 100644 index 0000000..f8ee1fc --- /dev/null +++ b/output/ex52.s @@ -0,0 +1,259 @@ +.data +functable_Test: + Test_start + Test_next +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 16 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Test + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s5 $s6 + move $s6 $s5 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Test_start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s6 $a0 + li $a0 16 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Test + sw $t9 0($s7) + move $s5 $s7 + move $s7 $s5 + sw $s7 0($s6) + li $s7 1 + move $s5 $s7 + sw $s5 0($s6) + lw $s5 0($s6) + move $s7 $s5 + lw $s5 0($s7) + lw $s4 0($s5) + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + jalr $s4 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s5 $v0 + move $s4 $s5 + sw $s4 0($s6) + lw $s4 0($s6) + move $s6 $s4 + move $a0 $s6 + li $t9 0 +NULL $s4 $a0 $t9 + move $s6 $s4 + move $s4 $s6 + move $s6 $s4 + beqz $s6 if17_else +if17_body: + li $s6 1 + move $s4 $s6 + move $s6 $s4 + j if17_end +if17_else: + li $s4 3 + move $s5 $s4 + move $s6 $s5 +if17_end: + move $s5 $s6 + move $s6 $s5 + move $s5 $s6 + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Test_next: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + li $s6 1 + li $s5 7 + li $s4 8 + move $a0 $s5 + move $t9 $s4 + slt $s3 $a0 $t9 + move $s4 $s3 + move $s3 $s4 + li $a0 1 + move $t9 $s6 +NULL $s4 $a0 $t9 + li $a0 1 + move $t9 $s3 +NULL $s6 $a0 $t9 + move $a0 $s4 + move $t9 $s6 +NULL $s3 $a0 $t9 + move $s6 $s3 + move $s3 $s6 + lw $s6 0($s7) + li $a0 1 + move $t9 $s3 +NULL $s7 $a0 $t9 + li $a0 1 + move $t9 $s6 +NULL $s3 $a0 $t9 + move $a0 $s7 + move $t9 $s3 +NULL $s6 $a0 $t9 + move $s3 $s6 + move $s6 $s3 + move $s3 $s6 + move $s6 $s3 + move $v0 $s6 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex52.vaporm b/output/ex52.vaporm new file mode 100644 index 0000000..b18511e --- /dev/null +++ b/output/ex52.vaporm @@ -0,0 +1,177 @@ +const functable_Test + :Test_start + :Test_next +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = HeapAllocZ(16 ) + [$s7+0] = :functable_Test + $s6 = $s7 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s7 + call $s5 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s6 = $v0 + $s5 = $s6 + $s6 = $s5 + PrintIntS($s6 ) + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func Test_start [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s6 = $a0 + $s7 = HeapAllocZ(16 ) + [$s7+0] = :functable_Test + $s5 = $s7 + $s7 = $s5 + [$s6+8] = $s7 + $s7 = 1 + $s5 = $s7 + [$s6+12] = $s5 + $s5 = [$s6+8] + $s7 = $s5 + $s5 = [$s7+0] + $s4 = [$s5+4] + local[8] = $t3 + local[9] = $t4 + local[10] = $t5 + local[11] = $t6 + local[12] = $t7 + local[13] = $t8 + $a0 = $s7 + call $s4 + $t3 = local[8] + $t4 = local[9] + $t5 = local[10] + $t6 = local[11] + $t7 = local[12] + $t8 = local[13] + $s5 = $v0 + $s4 = $s5 + [$s6+12] = $s4 + $s4 = [$s6+12] + $s6 = $s4 + $s4 = Eq($s6 0 ) + $s6 = $s4 + $s4 = $s6 + $s6 = $s4 + if0 $s6 goto :if17_else +if17_body: + $s6 = 1 + $s4 = $s6 + $s6 = $s4 + goto :if17_end +if17_else: + $s4 = 3 + $s5 = $s4 + $s6 = $s5 +if17_end: + $s5 = $s6 + $s6 = $s5 + $s5 = $s6 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func Test_next [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = 1 + $s5 = 7 + $s4 = 8 + $s3 = LtS($s5 $s4 ) + $s4 = $s3 + $s3 = $s4 + $s4 = Eq(1 $s6 ) + $s6 = Eq(1 $s3 ) + $s3 = Eq($s4 $s6 ) + $s6 = $s3 + $s3 = $s6 + $s6 = [$s7+12] + $s7 = Eq(1 $s3 ) + $s3 = Eq(1 $s6 ) + $s6 = Eq($s7 $s3 ) + $s3 = $s6 + $s6 = $s3 + $s3 = $s6 + $s6 = $s3 + $v0 = $s6 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret diff --git a/output/ex53.s b/output/ex53.s new file mode 100644 index 0000000..3230095 --- /dev/null +++ b/output/ex53.s @@ -0,0 +1,157 @@ +.data +functable_Test: + Test_start +.text +jal Main +li $v0 10 +syscall +Main: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + li $a0 12 + jal _heapAlloc + move $s7 $v0 + la $t9 functable_Test + sw $t9 0($s7) + move $s6 $s7 + move $s7 $s6 + lw $s6 0($s7) + lw $s5 0($s6) + li $s6 12 + move $s4 $s6 + sw $t3 -44($fp) + sw $t4 -48($fp) + sw $t5 -52($fp) + sw $t6 -56($fp) + sw $t7 -60($fp) + sw $t8 -64($fp) + move $a0 $s7 + move $a1 $s4 + jalr $s5 + lw $t3 -44($fp) + lw $t4 -48($fp) + lw $t5 -52($fp) + lw $t6 -56($fp) + lw $t7 -60($fp) + lw $t8 -64($fp) + move $s6 $v0 + move $s4 $s6 + move $s6 $s4 + move $a0 $s6 + jal _print + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +Test_start: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s5 $a0 + move $s6 $a1 + move $s7 $s6 + move $s6 $s7 + sw $s6 0($s5) + lw $s6 0($s5) + move $s7 $s6 + sw $s7 0($s5) + lw $s7 0($s5) + move $s5 $s7 + move $s7 $s5 + move $v0 $s7 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +AllocArray: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 64 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + sw $s3 -24($fp) + sw $s4 -28($fp) + sw $s5 -32($fp) + sw $s6 -36($fp) + sw $s7 -40($fp) + move $s7 $a0 + move $a0 $s7 + li $t9 4 + mul $s6 $a0 $t9 + move $a0 $s6 + li $t9 4 + add $s6 $a0 $t9 + move $a0 $s6 + jal _heapAlloc + move $s5 $v0 + sw $s7 0($s5) + move $v0 $s5 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $s3 -24($fp) + lw $s4 -28($fp) + lw $s5 -32($fp) + lw $s6 -36($fp) + lw $s7 -40($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 64 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex53.vaporm b/output/ex53.vaporm new file mode 100644 index 0000000..754e0ed --- /dev/null +++ b/output/ex53.vaporm @@ -0,0 +1,101 @@ +const functable_Test + :Test_start +func Main [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = HeapAllocZ(12 ) + [$s7+0] = :functable_Test + $s6 = $s7 + $s7 = $s6 + $s6 = [$s7+0] + $s5 = [$s6+0] + $s6 = 12 + $s4 = $s6 + 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] + $s6 = $v0 + $s4 = $s6 + $s6 = $s4 + PrintIntS($s6 ) + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func Test_start [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s5 = $a0 + $s6 = $a1 + $s7 = $s6 + $s6 = $s7 + [$s5+4] = $s6 + $s6 = [$s5+4] + $s7 = $s6 + [$s5+8] = $s7 + $s7 = [$s5+8] + $s5 = $s7 + $s7 = $s5 + $v0 = $s7 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret +func AllocArray [in 0, out 0, local 14] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + local[3] = $s3 + local[4] = $s4 + local[5] = $s5 + local[6] = $s6 + local[7] = $s7 + $s7 = $a0 + $s6 = MulS($s7 4 ) + $s6 = Add($s6 4 ) + $s5 = HeapAllocZ($s6 ) + [$s5+0] = $s7 + $v0 = $s5 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + $s3 = local[3] + $s4 = local[4] + $s5 = local[5] + $s6 = local[6] + $s7 = local[7] + ret diff --git a/output/ex99.s b/output/ex99.s new file mode 100644 index 0000000..d75bb99 --- /dev/null +++ b/output/ex99.s @@ -0,0 +1,71 @@ +.data +.text +jal Main +li $v0 10 +syscall +foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 28 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + sw $s2 -20($fp) + li $a0 1 + li $t9 3 + add $s0 $a0 $t9 + li $a0 2 + li $t9 4 + add $s1 $a0 $t9 + sw $s0 -28($fp) + sw $s1 -24($fp) + jalr $bar + move $a0 $v0 + move $t9 $v0 + add $s2 $a0 $t9 + move $v0 $s2 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $s2 -20($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 28 + jr $ra +bar: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 16 + sw $ra -4($fp) + sw $s0 -12($fp) + sw $s1 -16($fp) + lw $s0 0($fp) + lw $s1 4($fp) + move $a0 $s1 + move $t9 $s2 + add $v0 $a0 $t9 + lw $s0 -12($fp) + lw $s1 -16($fp) + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 16 + jr $ra +_print: + li $v0 1 # syscall: print integer + syscall + la $a0 _newline + li $v0 4 # syscall: print string + syscall + jr $ra +_error: + li $v0 4 # syscall: print string + syscall + li $v0 10 # syscall: exit + syscall +_heapAlloc: + li $v0 9 # syscall: sbrk + syscall + jr $ra +.data +.align 0 +_newline: .asciiz "\n" +_str0: .asciiz "null pointer\n" diff --git a/output/ex99.vaporm b/output/ex99.vaporm new file mode 100644 index 0000000..c160122 --- /dev/null +++ b/output/ex99.vaporm @@ -0,0 +1,26 @@ +func foo[in 0, out 2, local 3] + local[0] = $s0 + local[1] = $s1 + local[2] = $s2 + $s0 = Add(1 3) + $s1 = Add(2 4) + out[0] = $s0 + out[1] = $s1 + call :bar + $s2 = Add($v0 $v0) + $v0 = $s2 + $s0 = local[0] + $s1 = local[1] + $s2 = local[2] + ret + +func bar[in 2, out 0, local 2] + local[0] = $s0 + local[1] = $s1 + $s0 = in[0] + $s1 = in[1] + $v0 = Add($s1 $s2) + $s0 = local[0] + $s1 = local[1] + ret + diff --git a/output/test.s b/output/test.s new file mode 100644 index 0000000..ce268a6 --- /dev/null +++ b/output/test.s @@ -0,0 +1,37 @@ + .data + + .text + + jal main + li $v0 10 + syscall + +main: # L9 + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $t0 $a0 + mul $t1 $t0 4 + addu $t1 $t1 4 + move $a0 $t1 + jal foo + move $t1 $v0 + sw $t0 0($t1) + move $v0 $t1 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra + + +foo: + sw $fp -8($sp) + move $fp $sp + subu $sp $sp 8 + sw $ra -4($fp) + move $v0 $a0 + lw $ra -4($fp) + lw $fp -8($fp) + addu $sp $sp 8 + jr $ra |