问题描述
我正在尝试实践Mips中递归的工作方式。所以我试图写一个fibonacci函数fib。
起初我有addi $a0,$a0,n
来写一个通用的解决方案,但是我想如果我想在Qtspim中检查结果,也许我需要添加一个实数作为参数。如果代码背后的想法是错误的,我并不想获得完整的答案,但是想要一些帮助,以便在Qtspim中运行它,并自行发现我的错误(逻辑错误)
这是我的代码:
.globl main
.text
main:
addi $a0,4
fib:
addi $sp,$sp,-8
sw $ra,4($sp)
sw $a0,0($sp)
slti $t0,1
beq $t0,1,L2 #if n<1
beq $a0,L2 # if n=1
beq $t0,L1 # if n>1
#what to do when n<=1
L2:
addi $v0,$v0,1
jr $ra
#what to do when n>1
L1:
addi $a0,-1
jal fib
lw $a0,0($sp)
lw $ra,4($sp)
addi $sp,8
lw $t1,0($v0)
add $v0,$t1,$v0
jr $ra
li $v0,10
syscall
我收到这样的错误消息: 数据/堆栈中的错误地址读取:0x00000000
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)