Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.31 KB | None | 0 0
  1. Last login: Wed Jan 22 18:44:18 on ttys000
  2. luke@Lukes-MacBook-Pro ~ % open .
  3. luke@Lukes-MacBook-Pro ~ % cd
  4. luke@Lukes-MacBook-Pro ~ % ls
  5. 154sort Documents Movies Public nano.save
  6. Applications Downloads Music PycharmProjects
  7. CLionProjects IdeaProjects Musing School
  8. Desktop Library Pictures bin
  9. luke@Lukes-MacBook-Pro ~ % nano 154sort
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64. GNU nano 2.0.6 File: 154sort Modified
  65.  
  66. .data:
  67.  
  68.  
  69. .text
  70. swap: #a1 = index k, a0 = vector v
  71. sll $t1, $a1, 2 #t1 = k * 4
  72. add $t1, $a0, $t1 #t1 = v + (k * 4). i.e memory address of kth element in v
  73. lw $t0, 0($t1) #t0 (temp) = v[k]
  74. lw $t2, 4($t1) #t2 = v[k+1]
  75. sw $t2, 0($t1) #v[k] = word in t2
  76. sw $t0, 4($t1) #v[k+1] = word in t0. v[k] and v[k+1] have been swapped
  77. jr $ra #return to caller
  78. sort: #array length = 16 = 16*4 bytes = 64 bytes
  79. addi $sp, $sp, -20 #making room for 5 registers
  80. sw $s0, 0($sp)
  81. sw $s1, 4($sp)
  82. sw $s2, 8($sp)
  83. sw $s3, 12($sp)
  84. sw $ra, 16($sp)
  85. move $s0, $a0 #preserving a0 (v)
  86. move $s1, $a1 #preserving a1 (k)
  87. move $s2, $zero #s2 = i = 0
  88. outerloop:
  89. slt $t0, $s2, $s1 #check if i < n. t0 = 0 if i >= n
  90. beq $t0, $zero, exit #i >= n : exit loop
  91.  
  92. addi $s1, $s2, -1 #j = i -1
  93. innerloop:
  94. slti $t0, $s1, 0 #t0 = 1 if j < 0
  95. bne $t0, $zero, iterate #exit if j < 0
  96. sll $t1, $s1, 2 #t1 = j*4
  97. add $t2, $a0, $t1 #t2 = v + (j*4). i.e memory address of jth element in v
  98. lw $t3, 0($t2) #t3 = v[j]
  99. lw $t4, 4($t2) #t4 = v[j+1]
  100. slt $t0, $t4, $t3 #t0 = 0 if v[j+1] > v[j]
  101. beq $t0, $zero, iterate #back to outerloop if v[j+1] > v[j]
  102. move $a0, $s0 #moving back paramaters to call
  103. move $a1, $s1
  104. jal swap
  105. addi $s1, $s1, -1 #j -= 1
  106. j innerloop #inner loop iterate
  107. iterate:
  108. addi $s2, $s2, 1 #i += 1
  109. j outerloop #outer loop iterate
  110.  
  111. exit:
  112. lw $s0, 0($sp)
  113. lw $s1, 4($sp)
  114. lw $s2, 8($sp)
  115. lw $s3, 12($sp)
  116. lw $ra, 16($sp)
  117. addi $sp, $sp, 20 #restoring stack
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement