MIPS指令的简单C函数

时间:2011-04-22 04:54:40

标签: c assembly mips

我有一个简单的c函数,我需要转换为MIPS指令来完成作业。

功能是:

int load(int *ptr) {
     return *ptr;
}

我提出的MIPS指令是:

load:
     move $v0,$a0
     jr $ra

这是对的吗?

1 个答案:

答案 0 :(得分:3)

让我们分析一下这个函数。

首先,这里涉及的所有类型是什么?

  • ptr是指向int
  • 的指针
  • 返回值应为int类型。

接下来,该功能对此有何作用?

  • 取消引用int指针(即,读取指针指向的int值)ptr并返回该值。

接下来考虑一下你的代码在做什么。

  • 您将参数移动到返回值。
  • 从函数返回。

这是对的吗?

我会说不。你基本上返回了指针,而不是指针所指向的值。

你能做些什么?

记住我们在这里处理的类型以及你用它做了什么。您有自己的参数(类型为int *)并返回(类型为int)。类型不匹配。我们在C程序中做了什么?我们取消引用指针以获取值。换句话说,将int *转换为int。你需要这样做。