在mips中使用if语句中的函数的返回值

时间:2016-11-11 02:02:52

标签: assembly comparison mips return-value

如何在mips的另一个函数中使用函数的返回值?我知道我必须使用堆栈,但我不确定如何。

例如,如果我有以下代码:

int is_more_than_a_dozen(int a, int b) {
  if (sum(a, b) > 12)
    return 1;
  else
    return 0;
}
int sum(int a, int b) {
  return a + b;
}

除了在if语句中调用函数sum()之外,我知道如何做所有事情。

谢谢

编辑:

这是我的总和功能:

sum:
  add $v0, $a0, $a1
  jr $ra

1 个答案:

答案 0 :(得分:2)

您不需要使用堆栈。

请注意,要调用函数sum,您需要寄存器$a0$a1,但您需要的值已经存在于这两个寄存器中。所以你只需要调用函数,参数已经在正确的位置。

使用jal调用函数,jr从函数返回。您可以使用slti设置返回值。

http://www.mrc.uidaho.edu/mrc/people/jff/digital/MIPSir.html