C++ MIPS语言中的嵌套和递归过程

C++ MIPS语言中的嵌套和递归过程,c++,c,mips,C++,C,Mips,F和G是两个程序,在伪高级语言中定义如下 级别: 使用QtSpim编写并测试一个程序,该程序读取第一个自然数n,并在控制台上显示: 程序G n返回的值,如所述实现G和F 先前对两个程序G和F的调用必须使用jal跳转和链接指令来实现 带有参数介于之间的嵌套调用序列的轨迹 括号和各种嵌套调用返回的值返回括号之间的值,对于G和F n=1时的控制台输出示例: 结果:g1=4 轨迹:G1->F0->F-return 1->F1->F0->F-return 1->F-return 3->G-return 4

F和G是两个程序,在伪高级语言中定义如下 级别:

使用QtSpim编写并测试一个程序,该程序读取第一个自然数n,并在控制台上显示:

程序G n返回的值,如所述实现G和F 先前对两个程序G和F的调用必须使用jal跳转和链接指令来实现

带有参数介于之间的嵌套调用序列的轨迹 括号和各种嵌套调用返回的值返回括号之间的值,对于G和F

n=1时的控制台输出示例:

结果:g1=4 轨迹:G1->F0->F-return 1->F1->F0->F-return 1->F-return 3->G-return 4
有没有人能帮我用MIPS语言翻译这段C/C++代码?

稍微修改一下,“伪语言高级”代码是纯C89。您必须更改F和G的顺序或添加向前声明。顺便说一句,只有F是递归的,没有嵌套。G就叫F

#include <stdio.h>

int F(int m)
{
  if(m == 0) {
    return 1; 
  } 
  else {
    int p = F(m-1);
    return (2*p)+m;
  }
}

int G(int n)
{
  int b = 0;
  int u = 0;
  for (int k = 0; k <= n; k++) {
    u = F(k);
    b = (b*b)+u;
  }   
  return b;
}

int main(int argc, char** argv)
{
  printf("%u\n", G(2));
  return 0;
}

你有一个明确的编译你的代码到MIPS。当然,如果这是作业,让gcc帮你做作业可能会被视为作弊。

你忘了问问题。对不起,你是对的。我想知道是否有人能帮我把C/C++语言翻译成MIPS语言,谢谢
#include <stdio.h>

int F(int m)
{
  if(m == 0) {
    return 1; 
  } 
  else {
    int p = F(m-1);
    return (2*p)+m;
  }
}

int G(int n)
{
  int b = 0;
  int u = 0;
  for (int k = 0; k <= n; k++) {
    u = F(k);
    b = (b*b)+u;
  }   
  return b;
}

int main(int argc, char** argv)
{
  printf("%u\n", G(2));
  return 0;
}
gcc -Wall -std=c99 -march='mips3' -S -c filename.c