Code:
#vet a 10 ele
#vet b 10 ele
#vet c 20 ele
#a e b ordinati, fare il sort in c
#
#
#$1=i
#$2= spiaz i
#$3= j
#$4= spiaz j
#$5= k
#$6= spiaz di k
#$7= slti i<10, slti j<10, slt a[i] < b[j]
#$8= b[j]
#$9 = a[i]
#$10 = ind c[k]
#
# k=-1
# j=0
# for(i=0;i<10;i++){
# for (; j<10 && b[j] < = a[i];j++){
# k=k+1;
# c[k]=b[j]
# }
# k=k+1
# c[k]=a[i]
# }
#
%veta = 1100
%vetb = 1200
%vetc = 1300
%start = 1400
addi $5,$0,-1 #init k -1
add $3,$0,$0 #init j
add $4,$0,$0 # spiaz j
add $1,$0,$0 # init i
add $2,$0,$0 # spiaz i
inizio_for: slti $7,$1,10 # i<10 ?
beq $7,$0,fine_for
inizio_for_2: slti $7,$3,10 # j<10 ?
beq $7,$0,fine_for_2
addi $8,$4,1200 # indirizzo di b[j]
lw $8,0($8) # b[i] in $8
addi $9,$2,1100 # indirizzo di a[i]
lw $9,0($9) # a[i] in $9
slt $7, $9,$8 # slt a[i] < b[j]
bne $7,$0,fine_for_2
addi $5,$5,1 # k=k+1
add $6,$5,$5 # spiaz k
add $6,$6,$6
addi $10,$6,1300 # indirizzo c[k]
sw $8, 0 ($10) # c[k]= b[j]
addi $3,$3,1 #j=j+1
add $4,$3,$3 # spiaz j
add $4,$4,$4
j inizio_for_2
fine_for_2: addi $5,$5,1 # k=k+1
add $6,$5,$5 # spiaz k
add $6,$6,$6
addi $10,$6,1300 #indirizzo di c[k]
sw $9,0($10) #c[k]= a[i]
addi $1,$1,1 #i=i+1
add $2,$1,$1 # spiaz i
add $2,$2,$2
j inizio_for
fine_for: add $0,$0,$0