Итак, я хочу реализовать 2D-массив в MIPS.
Я хочу иметь 2 входа, 1 для столбцов и 1 для строк.
Затем я хочу выполнить итерацию по матрицы и заполните ее числами.
Это моя основная функция:
main:
li $v0,5 # Storing column number
syscall
move $s0,$v0
li $v0,5 # Storing row number
syscall
move $s1,$v0
la $a0,array
move $a1,$s0
move $a2,$s1
jal loadArray # Jumping to function for filling the matrix
Моя основная функция вызывает функцию в моем .text сегменте
loadArray:
move $t0,$a0#copying address
li $t1,0 #t1 row counter
li $t2,0 #t2 column counter
columnLoop:
beq $t1,$a1,rowLoop
# formula for going through matrix
mul $t3,$a1,$a2
mul $t3,$t3,$t2
mul $t4,$t1,4
add $t3,$t3,$t4
add $t3,$t3,$t0
addi $t1,$t1,1 #rowcounter++
li $v0,5
syscall
sw $v0,($t3)#storing a int
j kolonaLoop
rowLoop:
beq $t2,$a2,end
li $t1,0 #rowcounter=0
add $t2,$t2,1 # columncouter++
j columnLoop # loop into row loop
end:
jr $ra
Я просматриваю матрицу с формулой
addr=baseaddres+(_currColumn_ * _number of Rows_ * _nuOfRows_) + (_currRow_*4)
И время от времени я получаю сообщение об ошибке:
Исключение 5 [Ошибка адреса в хранилище]
Я устраняю неполадки, пытался выровнять адрес в моем .данных сегменте
.data
.align 2 #I even aligned the address
blanko: .asciiz " "
Array: .space 300
Обращаюсь к этому часами, помогите пожалуйста