Advertisement
Guest User

Untitled

a guest
Oct 20th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. #Daniel Zahn 11523337
  2. #ECE484 Lab 2
  3.  
  4. #s0 = list size
  5. #s1 = list index
  6. #s4 = min
  7. #s5 = max
  8.  
  9. main:
  10. beq $s0, $zero, finish
  11. add $a0, $s0, $zero
  12. add $a1, $s1, $zero
  13. jal findMinMax
  14. add $s4, $v0, $zero
  15. add $s5, $v1, $zero
  16. j finish
  17.  
  18.  
  19. #In subroutine:
  20. #s2 = min
  21. #s3 = max
  22. #s4 = index
  23. findMinMax:
  24. addi $sp, $sp, -4 #pushing $s0 through $s5
  25. sw $s0, 0($sp)
  26. addi $sp, $sp, -4
  27. sw $s1, 0($sp)
  28. addi $sp, $sp, -4
  29. sw $s2, 0($sp)
  30. addi $sp, $sp, -4
  31. sw $s3, 0($sp)
  32. addi $sp, $sp, -4
  33. sw $s4, 0($sp)
  34. add $s4, $zero, $zero #initializing vars, i = 0
  35. add $a0, $s0, $zero #s0 = size
  36. add $a1, $s1, $zero #s1 = list pointer
  37. lw $s2, 0($s1) #min = start of list
  38. lw $s3, 0($s1) #max = start of lsit
  39.  
  40. while:
  41.  
  42. slt $t0, $s4, $s0 #Checks if $s2 (index) < $s0 (size)
  43. beq $t0, $zero, end_while #If $t0 = 0 ($s2 is too big), end
  44. lw $t1, 0($s1) #Load the value of $s1 into $t1
  45.  
  46. check_max:
  47.  
  48. slt,$t0, $s3, $t1 #Checks if $s5 (current max) < $t1 (index value)
  49. beq $t0, $zero, check_min #If $s5 is larger ($t0 = 0) go to check min
  50. add $s3, $t1, $zero #Else, make $t1 the new current max
  51.  
  52. check_min:
  53.  
  54. slt,$t0, $t1, $s2 #Checks if $t1 (index value) < $s4 (current min)
  55. beq $t0, $zero, hop_next #If $t1 is larger ($t0 = 0) go to hop_next
  56. add $s2, $t1, $zero #Else, make $t1 the new current min
  57.  
  58. hop_next:
  59. addi $s1, $s1, 4 #Increment index
  60. addi $s4, $s4, 1 #increment pointer forwards
  61. j while
  62.  
  63. end_while:
  64. add $v0, $s2, $zero #set return values
  65. add $v1, $s3, $zero
  66. lw $s4, 0($sp) #popping s0 thru s4
  67. addi $sp, $sp, 4
  68. lw $s3, 0($sp)
  69. addi $sp, $sp, 4
  70. lw $s2, 0($sp)
  71. addi $sp, $sp, 4
  72. lw $s1, 0($sp)
  73. addi $sp, $sp, 4
  74. lw $s0, 0($sp)
  75. addi $sp, $sp, 4
  76. jr $ra
  77.  
  78. finish:
  79. addi $v0, $zero, 10
  80. #jr $ra #prevents spim from throwing memory error
  81. syscall
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement