Advertisement
Guest User

Untitled

a guest
May 9th, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 2.20 KB | None | 0 0
  1.     .data
  2. data:   .word 8,5,14,10,12,3,9,6,1,15,7,4,13,2,11
  3. size:   .word 15
  4. #use below sample if above example is too large to debug
  5. #data:  .word 4,2,5,3,1
  6. #size:  .word 5
  7.     .text
  8.  
  9. partition:
  10.     addi    $sp, $sp, -12
  11.     sw  $s0, 0($sp)
  12.     sw  $s1, 4($sp)
  13.     sw  $s2, 8($sp)
  14.     addi    $s0, $a1, $zero
  15.     addi    $s1, $a2, $zero
  16.     sll $t0, $s0, 2
  17.     add $t0, $a0, $t0
  18.     lw  $s2, 0($t0)
  19. L1: slt     $t0, $s0, $s1
  20.     beq $t0, $zero, E1
  21. L2: slt     $t0, $s2, $s1
  22.     beq     $t0, $zero, E2
  23.     subi    $s1, $s1, -1
  24.     j   L2
  25. E2: slt     $t0, $s0, $s1
  26.     sll $t1, $s0, 2
  27.     add $t1, $a0, $t1
  28.     lw  $t1, 0($t1)
  29.     slt $t1, $s2, $t1
  30.     xori    $t1, $t1, 1
  31.     and $t0, $t0, $t1
  32.     beq $t0, $zero, E3
  33.     addi    $s0, $s0, 1
  34.     j   E2
  35. E3: slt $t0, $s0, $s1
  36.     beq $t0, $zero, L4
  37.     sll     $t0, $s1, 2
  38.     add $t0, $a0, $t0
  39.     lw  $t1, 0($t0)
  40.     sll     $t2, $s0, 2
  41.     add     $t2, $a0, $t2
  42.     lw  $t3, 0($t2)
  43.     sw  $t3, 0($t0)
  44.     sw  $t1, 0($t2)    
  45. L4: j L1
  46.     sll     $t0, $a1, 2
  47.     add $t0, $a0, $t0
  48.     sll $t1, $s1, 2
  49.     add $t1, $a0, $t1
  50.     sw  $t2, 0($t1)
  51.     lw  $t2, 0($t0)
  52.     lw  $s2, 0($t1)
  53. E1: add $v0, $s1, $zero
  54.     addi    $sp, $sp, -4
  55.     lw  $s2, 0($sp)
  56.     lw  $s1, 0($sp)
  57.     lw  $s0, 0($sp)
  58.     jr  $ra
  59.    
  60. quick_sort:
  61.     # TODO: fill in your code here
  62.     addi    $sp, $sp, -4
  63.     lw  $sp,
  64.     slt     $t0, $a1, $a2
  65.     beg     $t0, $zero, Exit
  66.     addi    $sp, $sp, -16
  67.     sw  $a0, 0($sp)
  68.     sw  $a1, 4($sp)
  69.     sw  $a2, 8($sp)
  70.     sw  $ra, 12($sp)
  71.     jal partition
  72.     lw  $ra, 12($sp)
  73.     lw  $a2, 0($sp)
  74.     lw  $a1, 4($sp)
  75.     lw  $a0, 8($sp)
  76.     addi    $sp, $sp, 16
  77.     add     $s1, $v0, $zero
  78.     addi    $sp, -16
  79.     sw  $a0, 0($sp)
  80.     sw  $a1, 4($sp)
  81.     sw  $a2, 8($sp)
  82.     sw  $ra, 12($sp)
  83.     $addi   $a2, $s1, -1
  84.     jal     quick_sort
  85.     lw  $ra, 12($sp)
  86.     lw  $a2, 8($sp)
  87.     lw  $a1, 4($sp)
  88.     lw  $a0, 0($sp)
  89.     addi    $sp, $sp, -16
  90.     addi    $sp, $sp, 16
  91.     sw  $a0, 0($sp)
  92.     sw  $a1, 4($sp)
  93.     sw  $a2, 8($sp)
  94.     sw  $ra, 12($sp)
  95.     addi    $a1, $s1, 1
  96.     jal     quick_sort
  97.     lw  $ra, 12($sp)
  98.     lw  $a2, 8($sp)
  99.     lw  $a1, 4($sp)
  100.     lw  $a0, 0($sp)
  101. Exit:   lw  $s1, 0($sp)
  102.     addi    $sp, $sp, 4
  103.     jr  $ra
  104.    
  105. main:
  106.     la  $a0, data               #load address of "data"."la" is pseudo instruction, see Appendix A-66 of text book.
  107.     addi    $a1, $zero, 0
  108.     lw  $a2, size               #load data "size"
  109.     addi    $a2, $a2, -1
  110.    
  111.     addi    $sp, $sp, -4
  112.     sw  $ra, 0($sp)
  113.  
  114.     jal     quick_sort          #quick_sort(data,0,size-1)
  115.  
  116.     lw  $ra, 0($sp)
  117.     addi    $sp, $sp, 4
  118.  
  119.     jr  $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement