# array.s .text .globl main main: # soluzione che calcola base + indice * esize lw $t1,size li $t2,0 loop1: mul $t3,$t2,4 lw $t4,array($t3) addu $t5,$t5,$t4 # faccio quello che voglio con l'iesimo elemento addu $t2,$t2,1 blt $t2,$t1,loop1 sw $t5,result1 li $t5,0 # soluzione che calcola base + indice * esize # con base in un registro la $t0,array lw $t1,size li $t2,0 loop2: mul $t3,$t2,4 addu $t3,$t0,$t3 lw $t4,($t3) addu $t5,$t5,$t4 # faccio quello che voglio con l'iesimo elemento addu $t2,$t2,1 blt $t2,$t1,loop2 sw $t5,result2 li $t5,0 # soluzione che calcola base + offset la $t0,array lw $t1,msize li $t2,0 loop3: addu $t3,$t0,$t2 lw $t4,($t3) addu $t5,$t5,$t4 # faccio quello che voglio con l'iesimo elemento addu $t2,$t2,4 blt $t2,$t1,loop3 sw $t5,result3 li $t5,0 # soluzione che usa un puntatore la $t0,array la $t1,aend li $t2,0 loop4: lw $t4,($t0) addu $t5,$t5,$t4 # faccio quello che voglio con l'iesimo elemento addu $t0,$t0,4 blt $t0,$t1,loop4 sw $t5,result4 jr $ra .data array: .word 12,43,23,54,23 aend: size: .word 5 msize: .word 20 # = 5*4 result1:.word 0 result2:.word 0 result3:.word 0 result4:.word 0