【发布时间】:2013-12-06 21:41:45
【问题描述】:
对于了解这一点的人来说,这是一个快速的问题。但我的问题是我有一个任务,要使用各种方法的选择排序,我正在尝试弄清楚如何使用堆栈来保存返回地址。我的问题是我可以让它一直到最后一个加载返回地址代码块,但是我在数据/堆栈读取中得到了一个错误的地址,有人可以指出我在保存到哪里可能搞砸了堆栈?非常感谢!
main:
sub $sp, $sp, 4
sw $ra, ($sp)
jal sort
j exit
swap:
sub $sp, $sp, 8
sw $fp, 4($sp)
add $fp, $sp, 4
sw $ra, ($fp)
lw $ra, ($fp)
jr $ra
min:
sub $sp, $sp, 8
sw $fp, 4($sp)
add $fp, $sp, 4
sw $ra, ($fp)
lw $ra, ($fp)
jr $ra
sort:
sub $sp, $sp, 8
sw $fp, 4($sp)
add $fp, $sp, 4
sw $ra, ($fp)
jal min
jal swap
lw $ra, ($fp) <---- Bad address in data/stack read Exception
lw $fp, 4($fp)
jr $ra
exit:
li $v0, 10 #exit
syscall
【问题讨论】:
标签: function sorting assembly return mips