Advertisement
Guest User

Untitled

a guest
May 26th, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.51 KB | None | 0 0
  1. .text
  2.  
  3. main:
  4. addi $sp, $sp, -4
  5. sw $ra, 0($sp)
  6. la $a0, A
  7. la $a1, B
  8. lw $a2, n
  9. lw $a3, k
  10. jal procedura
  11. lw $ra, 0($sp)
  12. addi $sp, $sp, 4
  13. jr $ra
  14.  
  15. procedura:
  16. addi $sp, $sp, -28
  17. sw $s5, 24($sp)
  18. sw $s4, 20($sp)
  19. sw $s3, 16($sp)
  20. sw $s2, 12($sp)
  21. sw $s1, 8($sp)
  22. sw $s0, 4($sp)
  23. sw $ra, 0($sp)
  24. add $s0, $a0, $zero #metto in $s0 l'indirizzo di A
  25. sll $s2, $a2, 2 #metto in $s2 il valore di n*4
  26. add $s3, $a3, $zero #metto in $s3 il valore di k
  27. add $s4, $zero, $zero #metto in $s4 il valore di i=0
  28. add $s5, $zero, $zero #metto in $s5 la condizione=0
  29. WHILE: slt $t0, $s4, $s2 #$t0==0 se i >=n
  30. beq $t0, $zero, esciwh #se $t0 = 0 --> esci
  31. bne $s5, $zero, esciwh #se condizone != 0 --> esci
  32. add $t0, $s0, $s4 #metto in $t0 l'indirizzo di A[i]
  33. lw $a0, 0($t0) #metto in $a0 il valore A[i]
  34. jal conta_occorrenze
  35. addi $s4, $s4, 4 #incremento i
  36. addi $s1, $v1, $zero #metto in $s1 il numero di occorreenze rivelate
  37. slt $t2, $s1, $s3 # $t2 == 0 se n_occorrenze >= k
  38. bne $t2, $zero, WHILE #se $t2 != 0 -->WHILE
  39. addi $s5, $zero, 1 #condizione = 1
  40. j WHILE
  41. esciwh:lw $ra, 0($sp)
  42. lw $s0, 4($sp)
  43. lw $s1, 8($sp)
  44. lw $s2, 12($sp)
  45. lw $s3, 16($sp)
  46. lw $s4, 20($sp)
  47. lw $s5, 24($sp)
  48. addi $sp, $sp, 28
  49. jr $ra
  50.  
  51.  
  52.  
  53.  
  54.  
  55. conta_occorrenze:
  56. addi $sp, $sp, -28
  57. sw $s5, 24($sp)
  58. sw $s4, 20($sp)
  59. sw $s3, 16($sp)
  60. sw $s2, 12($sp)
  61. sw $s1, 8($sp)
  62. sw $s0, 4($sp)
  63. sw $ra, 0($sp)
  64. add $s0, $a0, $zero #metto in $s0 il valore di A[i]
  65. add $s1, $a1, $zero #metto in $s1 l'indirizzo di B
  66. sll $s2, $a2, 2 #metto in $s2 il valore di n*4
  67. add $s3, $zero, $zero #metto in $s3 il valore di j=0
  68. add $s4, $zero, $zero #metto in $s4 il contatore=0
  69. for: slt $t0, $s3, $s2 #$t0 == 0 se j >=n
  70. bne $t0, $zero, escifr #se $t0 = 0 --> escifr
  71. add $t1, $a1, $s3 #metto in $t1 l'indirizzo di B[i]
  72. lw $s5, 0($t1) #metto in $s5 il valore di B[i]
  73. addi $s3, $s3, 4 #incremento j
  74. bne $s0, $s5 ,for #se A[i] != B[j] -->for
  75. addi $s4, $s4, 1 #contatore = contatore + 1
  76. j for
  77. escifr:
  78. add $v1, $s4, $zero #metto in $v1 il valore di contatore finale
  79. lw $ra, 0($sp)
  80. lw $s0, 4($sp)
  81. lw $s1, 8($sp)
  82. lw $s2, 12($sp)
  83. lw $s3, 16($sp)
  84. lw $s4, 20($sp)
  85. lw $s5, 24($sp)
  86. addi $sp, $sp, 28
  87. jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement