我是 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
时,我收到了这样的错误。
有什么解决办法吗?
答案 0 :(得分:0)
你的问题有点棘手。
调用该函数时,$ra 包含 jal swap
之后的行地址。
这是哪一行?!你猜对了, swap:
行,我提议在 jal swap
和 swap:
之间编写结束程序的代码。
li $v0,10 # $v0 = 10
syscall # ends the program