summaryrefslogtreecommitdiff
path: root/output/LinearSearch.opt.s
diff options
context:
space:
mode:
Diffstat (limited to 'output/LinearSearch.opt.s')
-rw-r--r--output/LinearSearch.opt.s290
1 files changed, 290 insertions, 0 deletions
diff --git a/output/LinearSearch.opt.s b/output/LinearSearch.opt.s
new file mode 100644
index 0000000..a012e02
--- /dev/null
+++ b/output/LinearSearch.opt.s
@@ -0,0 +1,290 @@
+.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
+ bgtz $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 -12($fp)
+ 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 -12($fp)
+ 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)
+ move $a0 $t1
+ move $t9 $t2
+ slt $t2 $a0 $t9
+ blez $t2 while1_end
+ lw $t2 0($t0)
+ bgtz $t2 null2
+ la $a0 _str0
+ j _error
+null2:
+ lw $t3 0($t2)
+ move $a0 $t1
+ move $t9 $t3
+ sltu $t3 $a0 $t9
+ bgtz $t3 bounds1
+ la $a0 _str0
+ j _error
+bounds1:
+ move $a0 $t1
+ li $t9 4
+ mul $t3 $a0 $t9
+ move $a0 $t3
+ move $t9 $t2
+ addu $t3 $a0 $t9
+ lw $t3 4($t3)
+ move $a0 $t3
+ jal _print
+ move $a0 $t1
+ li $t9 1
+ addu $t1 $a0 $t9
+ 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)
+ move $a0 $t2
+ move $t9 $t4
+ slt $t4 $a0 $t9
+ blez $t4 while2_end
+ lw $t4 0($t0)
+ bgtz $t4 null3
+ la $a0 _str0
+ j _error
+null3:
+ lw $t5 0($t4)
+ move $a0 $t2
+ move $t9 $t5
+ sltu $t5 $a0 $t9
+ bgtz $t5 bounds2
+ la $a0 _str0
+ j _error
+bounds2:
+ move $a0 $t2
+ li $t9 4
+ mul $t5 $a0 $t9
+ move $a0 $t5
+ move $t9 $t4
+ addu $t5 $a0 $t9
+ lw $t5 4($t5)
+ move $a0 $t1
+ li $t9 1
+ addu $t4 $a0 $t9
+ move $a0 $t5
+ move $t9 $t1
+ slt $t6 $a0 $t9
+ blez $t6 if1_else
+ j if1_end
+if1_else:
+ move $a0 $t5
+ move $t9 $t4
+ slt $t4 $a0 $t9
+ bgtz $t4 if2_else
+ j if2_end
+if2_else:
+ li $t3 1
+ lw $t2 4($t0)
+if2_end:
+if1_end:
+ move $a0 $t2
+ li $t9 1
+ addu $t2 $a0 $t9
+ 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 -12($fp)
+ 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)
+ move $a0 $t1
+ li $t9 1
+ addu $t1 $a0 $t9
+while3_top:
+ lw $t2 4($s0)
+ move $a0 $t0
+ move $t9 $t2
+ slt $t2 $a0 $t9
+ blez $t2 while3_end
+ li $a0 2
+ move $t9 $t0
+ mul $t2 $a0 $t9
+ move $a0 $t1
+ li $t9 3
+ subu $t3 $a0 $t9
+ lw $t4 0($s0)
+ bgtz $t4 null4
+ la $a0 _str0
+ j _error
+null4:
+ lw $t5 0($t4)
+ move $a0 $t0
+ move $t9 $t5
+ sltu $t5 $a0 $t9
+ bgtz $t5 bounds3
+ la $a0 _str0
+ j _error
+bounds3:
+ move $a0 $t0
+ li $t9 4
+ mul $t5 $a0 $t9
+ move $a0 $t5
+ move $t9 $t4
+ addu $t5 $a0 $t9
+ move $a0 $t2
+ move $t9 $t3
+ addu $t3 $a0 $t9
+ sw $t3 4($t5)
+ move $a0 $t0
+ li $t9 1
+ addu $t0 $a0 $t9
+ move $a0 $t1
+ li $t9 1
+ subu $t1 $a0 $t9
+ j while3_top
+while3_end:
+ li $v0 0
+ lw $s0 -12($fp)
+ 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
+ move $a0 $t0
+ li $t9 4
+ mul $t1 $a0 $t9
+ move $a0 $t1
+ li $t9 4
+ addu $t1 $a0 $t9
+ 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"