如何将此代码从C转换为Mips?

如何将此代码从C转换为Mips?,c,mips,microprocessors,C,Mips,Microprocessors,有人能帮我把这个C代码转换成Mips吗? 我真的不知道。什么都可以。谢谢 int aplica(int (*f)(int), int x) { return (*f)(x); } int f1(int y){return y+y;} int f2(int y){return y*y;} int f3(int y){return -y;} int (*vf[])={f1, f2, f3}, v[3]; void main() { reg

有人能帮我把这个C代码转换成Mips吗? 我真的不知道。什么都可以。谢谢

  int aplica(int (*f)(int), int x)
  {
    return (*f)(x);
  }

  int f1(int y){return y+y;}
  int f2(int y){return y*y;}
  int f3(int y){return -y;}
  
  int (*vf[])={f1, f2, f3}, v[3];

  void main()
  {
    register int i;
    for(i=0;i<3;++i) v[i]=aplica(vf[i],1+i);
  }  
intaplica(int(*f)(int),intx)
{
申报表(*f)(x);
}
int f1(int y){返回y+y;}
intf2(inty){返回y*y;}
int f3(int y){return-y;}
int(*vf[])={f1,f2,f3},v[3];
void main()
{
寄存器int i;

对于(i=0;i这似乎是家庭作业,这里不赞成给出解决方案,但我可以给出方向

让我们先修复代码并添加一点输出(但您应该花时间,并使用调试器逐步完成):

它在C语言中看起来很复杂,但它仍然只是一个指针

要在MIPS中调用函数,请使用
jal
jumpandlink”,后跟函数名。提示:您可以使用
jalr
跳转到寄存器中的地址。例如:
jalr$t0
。简而言之,它已经是您的函数指针

static int f1(int y)
{
   return y+y;
}
(*fp)(int x) = f1;
你需要记住(或者在这里找到Stackoverflow,谷歌会提供一些帮助)

  • 如何在MIPS中执行函数
  • 如何在MIPS中执行指针
  • 如何在MIPS中创建数组(列表)

(我试过了,C&p把它们输入谷歌,结果很好)

我们必须转换吗?我想我们需要交叉编译吗?你确定这是有效的C代码吗?使用编译器吗?这是教授发给我的。我想这是一个有效的代码:))我真的不知道如何解决这项任务。
static int f1(int y)
{
   return y+y;
}
(*fp)(int x) = f1;