什么是MIPS中的int f(int n,int m)

时间:2019-03-02 18:05:50

标签: c mips

我正在将一些C代码转换为MIPS,并停留在这一行上。

int f(int n, int m)

我知道这应该用于初始化变量,但是在MIPS中会是什么样子?我有n = $ a0和m = $ a1。

对于上下文,这是完整的代码:

int f(int n, int m) {    
   if (n ≤ 0)
      return m;
   else
      return f(n-1, n+m);
 }

由于某些原因,我已经了解了循环的工作原理。

2 个答案:

答案 0 :(得分:2)

这是递归函数,但是任何优化的编译器实际上都会删除递归。

int f(int n, int m) {    
   if (n <= 0)
      return m;
   else
      return f(n-1, n+m);
 }

f:
.L3:
        MOV.B   #0, R14
        CMP.W   R12, R14 { JGE        .L1
        ADD.W   R12, R13
        ADD.W   #-1, R12
        BR      #.L3
.L1:
        MOV.W   R13, R12
        RET

答案 1 :(得分:1)

它是一个简单的c递归函数。函数名称是f,它使用两个参数m和n,并简单地将m中的一系列n加到1。

例如,如果您传递f(3,5),它将返回3 + 2 + 1 + 5 = 11或f(4,5)将返回4 + 3 + 2 + 1 + 5 = 15