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)留出空间。
我做错了什么?