交换 MIPS(无限循环)时出现问题

时间:2021-07-11 05:32:17

标签: c mips infinite-loop swap

我是 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 时,我收到了这样的错误。

有什么解决办法吗?

1 个答案:

答案 0 :(得分:0)

你的问题有点棘手。

调用该函数时,$ra 包含 jal swap 之后的行地址。

这是哪一行?!你猜对了, swap: 行,我提议在 jal swapswap: 之间编写结束程序的代码。

li $v0,10 # $v0 = 10 syscall # ends the program