Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .text
- main:
- addi $sp, $sp, -4
- sw $ra, 0($sp)
- la $a0, A
- la $a1, B
- lw $a2, n
- lw $a3, k
- jal procedura
- lw $ra, 0($sp)
- addi $sp, $sp, 4
- jr $ra
- procedura:
- addi $sp, $sp, -28
- sw $s5, 24($sp)
- sw $s4, 20($sp)
- sw $s3, 16($sp)
- sw $s2, 12($sp)
- sw $s1, 8($sp)
- sw $s0, 4($sp)
- sw $ra, 0($sp)
- add $s0, $a0, $zero #metto in $s0 l'indirizzo di A
- sll $s2, $a2, 2 #metto in $s2 il valore di n*4
- add $s3, $a3, $zero #metto in $s3 il valore di k
- add $s4, $zero, $zero #metto in $s4 il valore di i=0
- add $s5, $zero, $zero #metto in $s5 la condizione=0
- WHILE: slt $t0, $s4, $s2 #$t0==0 se i >=n
- beq $t0, $zero, esciwh #se $t0 = 0 --> esci
- bne $s5, $zero, esciwh #se condizone != 0 --> esci
- add $t0, $s0, $s4 #metto in $t0 l'indirizzo di A[i]
- lw $a0, 0($t0) #metto in $a0 il valore A[i]
- jal conta_occorrenze
- addi $s4, $s4, 4 #incremento i
- addi $s1, $v1, $zero #metto in $s1 il numero di occorreenze rivelate
- slt $t2, $s1, $s3 # $t2 == 0 se n_occorrenze >= k
- bne $t2, $zero, WHILE #se $t2 != 0 -->WHILE
- addi $s5, $zero, 1 #condizione = 1
- j WHILE
- esciwh:lw $ra, 0($sp)
- lw $s0, 4($sp)
- lw $s1, 8($sp)
- lw $s2, 12($sp)
- lw $s3, 16($sp)
- lw $s4, 20($sp)
- lw $s5, 24($sp)
- addi $sp, $sp, 28
- jr $ra
- conta_occorrenze:
- addi $sp, $sp, -28
- sw $s5, 24($sp)
- sw $s4, 20($sp)
- sw $s3, 16($sp)
- sw $s2, 12($sp)
- sw $s1, 8($sp)
- sw $s0, 4($sp)
- sw $ra, 0($sp)
- add $s0, $a0, $zero #metto in $s0 il valore di A[i]
- add $s1, $a1, $zero #metto in $s1 l'indirizzo di B
- sll $s2, $a2, 2 #metto in $s2 il valore di n*4
- add $s3, $zero, $zero #metto in $s3 il valore di j=0
- add $s4, $zero, $zero #metto in $s4 il contatore=0
- for: slt $t0, $s3, $s2 #$t0 == 0 se j >=n
- bne $t0, $zero, escifr #se $t0 = 0 --> escifr
- add $t1, $a1, $s3 #metto in $t1 l'indirizzo di B[i]
- lw $s5, 0($t1) #metto in $s5 il valore di B[i]
- addi $s3, $s3, 4 #incremento j
- bne $s0, $s5 ,for #se A[i] != B[j] -->for
- addi $s4, $s4, 1 #contatore = contatore + 1
- j for
- escifr:
- add $v1, $s4, $zero #metto in $v1 il valore di contatore finale
- lw $ra, 0($sp)
- lw $s0, 4($sp)
- lw $s1, 8($sp)
- lw $s2, 12($sp)
- lw $s3, 16($sp)
- lw $s4, 20($sp)
- lw $s5, 24($sp)
- addi $sp, $sp, 28
- jr $ra
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement