diff options
author | bd-912 <bdunahu@colostate.edu> | 2024-05-07 18:07:44 -0600 |
---|---|---|
committer | bd-912 <bdunahu@colostate.edu> | 2024-05-07 18:07:44 -0600 |
commit | 9f24d0511a89379bb3326ee1b62eeaabe589571b (patch) | |
tree | 53303feae0ac4bdbeedb350ee69edaaf3313806a /base/BinaryTree.opt.s | |
parent | dcf0a8a4a77b0add316b3a8ea7cc0f746c128594 (diff) |
Print Datasegments to file, other Condense improvements, initial tests pass
Diffstat (limited to 'base/BinaryTree.opt.s')
-rw-r--r-- | base/BinaryTree.opt.s | 1064 |
1 files changed, 1064 insertions, 0 deletions
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" |