¿Alguna idea? ¿Por qué estoy recibiendo: Runtime excepción en 0x00400020: dirección de búsqueda no alineados en la línea límite de palabra 0x00000007 problema es: lw $ s1,0 ($ a1) #copy arg2 = tamaño de la matrizdirección de recuperación de MIPS no alineada en el límite de palabra, utilizada .align 4, todavía no ir
.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, Realmente aprecio la ayuda. Esta no es una búsqueda bastante lineal, es solo un problema de un libro que agrega otro número, pero eso es irrelevante. Volví y noté algunos errores, pero todavía tenía problemas. Mis problemas han girado en torno a esto: $ a0 la, gama \t # si esta carga la dirección de la matriz en a0 y lw $ s0, ($ a0) #should esto no copiar la dirección almacenada allí para S0 me fijo esto en mi código haciendo la $ s0, ($ a0) La forma en que entendí LW es que obtiene el valor almacenado en esa dirección de memoria y lo coloca en el registro. Entonces, ¿es esto incorrecto? ¿Simplemente almacena la dirección? – bep
la carga la dirección de un símbolo. En su caso, contendrá la ubicación del primer elemento de las matrices. lw carga la celda de memoria de la memoria y la almacena en el registro de destino. la $ s0, ($ a0) no tiene sentido. la siempre toma un símbolo de tu código, nunca un registro. –