des idées? Pourquoi je reçois: exception d'exécution à 0x00400020: chercher l'adresse ne sont pas alignés sur une frontière de mot 0x00000007 ligne de problème est: pv $ s1,0 ($ a1) #copy arg2 = taille du tableauL'adresse de recherche MIPS n'est pas alignée sur la limite de mot, utilisée .align 4, toujours non
.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, J'apprécie vraiment l'aide. Ce n'est pas tout à fait une recherche linéaire, c'est juste un problème d'un livre qui ajoute un autre numéro, mais ce n'est pas pertinent. Je suis retourné et j'ai remarqué quelques erreurs, mais j'avais toujours des problèmes. Mes problèmes ont tourné autour de ceci: la a0 $, un tableau \t #if cette charge l'adresse du tableau dans a0 et pv s0 $, (a0 $) #should cela ne copie l'adresse enregistrée à s0 je fixe cela dans mon code en faisant la $ s0, ($ a0) La façon dont j'ai compris LW est qu'il obtient la valeur stockée à cette adresse de mémoire et le met dans le registre. Alors est-ce incorrect? Il stocke juste l'adresse? – bep
la charge l'adresse d'un symbole. Dans votre cas, il contiendra l'emplacement du premier élément des tableaux. lw charge la cellule mémoire de la mémoire et la stocke dans le registre de destination. la $ s0, ($ a0) n'a aucun sens. la prend toujours un symbole de votre code, jamais un registre. –