Advertisement
Simone_99

es6.s

Nov 15th, 2019
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. .data
  2. A: .word 1 2 3 4 5 6
  3. B: .word 0 0 0 0 0 0
  4. M: .word 2
  5. N: .word 3
  6.  
  7. .text
  8. .globl main
  9.  
  10. trasposta:
  11. add $t0, $zero, $zero # $t0 = i=0
  12. add $t1, $zero, $zero # $t1 = j=0
  13. cicl_i:
  14. slt $t2, $t0, $a2 # i<M
  15. beq $t2, $zero, exit_tra
  16. cicl_j:
  17. slt $t2, $t1, $a3 # j<N
  18. beq $t2, $zero, incr_i
  19.  
  20. mult $a3, $t0
  21. mflo $t3 # N*i
  22. add $t3, $t3, $t1 # N*i+j
  23. sll $t3, $t3, 2 # (N*i+j)*4 = offset elemento di A
  24. add $t3, $t3, $a0 # &A[i][j]
  25. lw $t3, 0($t3) # A[i][j]
  26.  
  27. mult $a2, $t1
  28. mflo $t4 # M*j
  29. add $t4, $t4, $t0 # M*j+i
  30. sll $t4, $t4, 2 # (M*j+i)*4 = offset elemento di B
  31. add $t4, $t4, $a1 # &B[j][i]
  32. sw $t3, 0($t4) # B[j][i]=A[i][j]
  33.  
  34. addi $t1, $t1, 1
  35. j cicl_j
  36.  
  37. incr_i:
  38. add $t1, $zero, $zero
  39. addi $t0, $t0, 1
  40. j cicl_i
  41. exit_tra:
  42. jr $ra
  43.  
  44.  
  45. simmetrica:
  46. bne $a1, $a2, exit0 # M!=N => 0
  47.  
  48. add $t0, $zero, $zero # $t0 = i=0
  49. add $t1, $zero, $zero # $t1 = j=0
  50. ciclo_i:
  51. slt $t2, $t0, $a1 # i<M
  52. beq $t2, $zero, exit1
  53. ciclo_j:
  54. slt $t2, $t1, $t0 # j<i
  55. beq $t2, $zero, inc_i
  56.  
  57. mult $t0, $a2
  58. mflo $t3 # i*N
  59. add $t3, $t3, $t1 # i*N+j
  60. sll $t3, $t3, 2 # (i*N+j)*4
  61. add $t3, $t3, $a0 # &A[i][j]
  62. lw $t3, 0($t3) # A[i][j]
  63.  
  64. mult $t1, $a2
  65. mflo $t4 # j*N
  66. add $t4, $t4, $t0 # j*N+i
  67. sll $t4, $t4, 2 # (j*N+i)*4
  68. add $t4, $t4, $a0 # &A[j][i]
  69. lw $t4, 0($t4) # A[j][i]
  70.  
  71. bne $t3, $t4, exit0
  72.  
  73. addi $t1, $t1, 1 # j++
  74. j ciclo_j
  75.  
  76. inc_i:
  77. addi $t0, $t0, 1 # i++
  78. add $t1, $zero, $zero # j = 0
  79. j ciclo_i
  80. exit1:
  81. add $v0, $zero, 1
  82. jr $ra
  83. exit0:
  84. add $v0, $zero, $zero
  85. jr $ra
  86.  
  87.  
  88. main:
  89. addi $sp, $sp, -4
  90. sw $ra, 0($sp)
  91.  
  92. la $a0, A # $a0 = &A
  93. lw $a1, M # $a1 = M = righe
  94. lw $a2, N # $a2 = N = colonne
  95. jal simmetrica # verifico se A e' simmetrica
  96.  
  97. bne $v0, $zero, exit_1
  98.  
  99. la $a0, A # $a0 = &A
  100. la $a1, B # $a1 = &B
  101. lw $a2, M # $a2 = M = righe di A
  102. lw $a3, N # $a3 = N = colonne di A
  103. jal trasposta # creo la matrice trasposta di A
  104.  
  105. j exit
  106. exit_1:
  107. add $a0, $v0, $zero
  108. add $v0, $zero, 1
  109. syscall
  110. exit:
  111. lw $ra, 0($sp)
  112. addi $sp, $sp, 4
  113. jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement