test_1:
addi $sp, $sp, -4
sw $ra, 0($sp)
jal test_2
lw $ra, 0($sp)
addi $sp, $sp, 4
jr $ra
test_2:
addi $sp, $sp, -4
sw $ra, 4($sp)
jal test_3
lw $ra, 4($sp)
addi $sp, $sp, 4
jr $ra
Ошибка: Error in : invalid program counter value: 0x00000000. Go: execution terminated with errors.
Я не понимаю, почему я получаю эту ошибку.Насколько я понимаю, test_1
создает место для одного в стеке и сохраняет его $ra
.После инструкции jal test_2
мы переходим к test_2
и здесь test_2
освобождает место для секунды $ra
(-4 -4 = -8).
Что я делаю не так?