如何解决交换 MIPS无限循环时出现问题
我是 MIPS 的新手。我正在尝试使用参数和返回值传递机制交换 MIPS 中的两个元素。
这是 C 代码:
cascade = [(CascadeType.REMOVE)]
我的 MIPS 代码:
swap(int *a,int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
我收到一个 .data
aa: .word 1
bb: .word 2
.text
main: la $a0,aa
la $a1,bb
jal swap
swap:
lw $t0,($a0)
lw $t1,($a1)
sw $t1,($a0)
sw $t0,($a1)
jr $ra
错误。
当我使用 Infinite Loop Detected
-> syscall
时,我收到了这样的错误。
有什么解决办法吗?
解决方法
你的问题有点棘手。
调用该函数时,$ra 包含 jal swap
之后的行地址。
这是哪一行?!你猜对了, swap:
行,我提议在 jal swap
和 swap:
之间编写结束程序的代码。
li $v0,10 # $v0 = 10
syscall # ends the program
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。