summaryrefslogtreecommitdiff
path: root/base/LinkedList.s
diff options
context:
space:
mode:
authorbd-912 <bdunahu@colostate.edu>2024-05-07 18:07:44 -0600
committerbd-912 <bdunahu@colostate.edu>2024-05-07 18:07:44 -0600
commit9f24d0511a89379bb3326ee1b62eeaabe589571b (patch)
tree53303feae0ac4bdbeedb350ee69edaaf3313806a /base/LinkedList.s
parentdcf0a8a4a77b0add316b3a8ea7cc0f746c128594 (diff)
Print Datasegments to file, other Condense improvements, initial tests pass
Diffstat (limited to 'base/LinkedList.s')
-rw-r--r--base/LinkedList.s944
1 files changed, 944 insertions, 0 deletions
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"