我有一个简单的c函数,我需要转换为MIPS指令来完成作业。
功能是:
int load(int *ptr) {
return *ptr;
}
我提出的MIPS指令是:
load:
move $v0,$a0
jr $ra
这是对的吗?
答案 0 :(得分:3)
让我们分析一下这个函数。
首先,这里涉及的所有类型是什么?
ptr
是指向int
。int
类型。接下来,该功能对此有何作用?
int
指针(即,读取指针指向的int
值)ptr
并返回该值。接下来考虑一下你的代码在做什么。
这是对的吗?
我会说不。你基本上返回了指针,而不是指针所指向的值。
你能做些什么?
记住我们在这里处理的类型以及你用它做了什么。您有自己的参数(类型为int *
)并返回(类型为int
)。类型不匹配。我们在C程序中做了什么?我们取消引用指针以获取值。换句话说,将int *
转换为int
。你需要这样做。