Возникла исключительная ситуация MIPS 5 [ошибка адреса в хранилище] - PullRequest
0 голосов
/ 26 февраля 2020

Итак, я хочу реализовать 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

Обращаюсь к этому часами, помогите пожалуйста

...