Ошибка адреса вне диапазона для регистра a1 - PullRequest
0 голосов
/ 08 февраля 2020

Я не понимаю, почему я получаю этот адрес из-за ошибки диапазона. Я работаю над функцией sum2 с использованием индексации массива. Я пытаюсь загрузить значения для B в регистр $ a1

, строка 32: исключение времени выполнения по адресу 0x00400018: адрес вне диапазона 0x20020018

    .data

A:  .word 0,0,0
B:  .word 0,0,0

    .text
main:   

    jal read_A


sum2:
    li  $t7, 0
    la  $t5, B

    lw  $a1, B($t5)
    add $t7,$t7,$a1

    addi    $t5, $t5, 4

    lw   $a1, B($t5)
    add $t7, $t7, $a1

    addi    $t5, $t5, 4

    lw  $a1, B($t5)
    add $t7, $t7, $a1

    jr  $ra

sum1:
    li  $t9, 0

    la  $t0, A
    lw  $a0, ($t0)
    add $t9,$t9,$a0

    addi $t0, $t0, 4
    lw   $a0, ($t0)
    add $t9, $t9, $a0

    la  $t0, A+8
    lw  $a0, ($t0)
    add $t9, $t9, $a0

    jr  $ra

    .data
prompt: .asciiz "Enter three integers:\n"

    .text
read_A:
    la  $a0, prompt
    li  $v0, 4
    syscall

    li      $v0, 5 #read first integer
    syscall

    sw  $v0, A  #Save first integer

    li  $v0, 5  #save second integer
    syscall

    sw  $v0, A+4 #Save second integer

    li  $v0, 5
    syscall

    sw  $v0, A+8 #save 3rd integer

    jr $ra    

1 Ответ

0 голосов
/ 08 февраля 2020

Я исправил это, это было связано с регистром, который я помещал в скобку индекса массива

...