tutte le idee? Perché sto ottenendo: eccezione di runtime a 0x00400020: prendere indirizzo non allineati su confine di parola linea 0x00000007 problema è: lw $ s1,0 ($ A1) #copy arg2 = dimensione della matriceMIPS recuperano indirizzo non allineati su confine di parola, usata .align 4, ancora non va
.data
.align 4 #added this, didnt work
size: .word 7
.align 4 #added this, didnt work
search: .word 30
.align 4 #added this,didnt work
array: .word 10,20,30,40,50,60,70
.align 4
.text
main:
la $a0,array #$a0 = address of array
lw $a1,size #a1 = size of array
lw $a2,search #$a2 = search key
COUNT:
lw $s0,0($a0) #copy arg1 = address array
addi $s1,$zero,7
lw $s1,0($a1) #copy arg2 = size of array
lw $s2,0($a2) #copy arg3 = search key (n)
addi $s2,$zero,30
COUNTLOOP:
add $v0,$zero,$zero #v0 = res
add $t0,$zero,$zero #$t0 = init i to 0
slt $t1,$t0,$s1 #check if i > size of array
beq $t1,$zero,DONECOUNT #i is n so end
sll $t2,$s0,2 #$t2 = get off set for a[i]
lw $t3,0($t2) #$t3 = get value of a[i]
bne $t3,$s2,CLOOPBTM #check if a[i] == seach key
addi $v0,$v0,1 #if above then increment res
CLOOPBTM:
addi $t0,$t0,1
j COUNTLOOP
DONECOUNT:
Hey, I REALMENTE apprezzo l'aiuto. Non si tratta di una ricerca molto lineare, il suo solo un problema da un libro che aggiunge un altro numero, ma questo è irrilevante. ho fatto tornare indietro e notare qualche errore, ma ero ancora avere problemi. I miei problemi ruotano attorno a questo: la $ a0, array \t #if carica l'indirizzo dell'array in a0 e lw $ s0, ($ a0) #non si copia questo indirizzo memorizzato in s0 Ho risolto questo nel mio codice facendo la $ s0, ($ a0) Il modo in cui ho capito LW è che ottiene il valore memorizzato in quell'indirizzo di memoria e lo inserisce nel registro. Quindi è sbagliato? Memorizza solo l'indirizzo? – bep
carica l'indirizzo di un simbolo. Nel tuo caso conterrà la posizione del primo elemento delle matrici. Carica la cella di memoria dalla memoria e la memorizza nel registro di destinazione. la $ s0, ($ a0) non ha senso. la prende sempre un simbolo dal tuo codice, mai un registro. –