1
我有一个简单的c函数,我需要将其转换为MIPS指令进行作业分配。MIPS指令的简单C函数
功能是:
int load(int *ptr) {
return *ptr;
}
我的MIPS指令,我想出是:
load:
move $v0,$a0
jr $ra
这是正确的吗?
我有一个简单的c函数,我需要将其转换为MIPS指令进行作业分配。MIPS指令的简单C函数
功能是:
int load(int *ptr) {
return *ptr;
}
我的MIPS指令,我想出是:
load:
move $v0,$a0
jr $ra
这是正确的吗?
让我们来分析一下功能。
首先,这里涉及到的一切类型是什么?
ptr
是一个指向int
。int
。接下来,该功能对此有什么作用?
int
指针(即,读出int
值,该指针指向)ptr
并返回该值。接下来考虑你的代码在做什么。
这是正确的吗?
我会说不。你基本上已经返回了指针,而不是指针指向的值。
你能做些什么呢?
请记住我们在这里处理的类型以及您对它的处理方式。你有你的论点(类型int *
),你返回(int
类型)。类型不匹配。我们在C程序中做了什么?我们取消了引用来获取值的指针。换句话说,将int *
转换为int
。你需要这样做。
你有没有试过运行它?它工作? – Mat 2011-04-22 04:57:58
您以前的[question](http://stackoverflow.com/questions/5751463/how-is-this-mips-assembly-conversion-of-this-c-program)以'j $ ra'结尾;这以'jr $ ra'结尾。差异很重要吗? – 2011-04-22 05:00:37
通常我使用MARS来测试我的工作,但此刻我远离主计算机,根据我的教科书我无法测试 – 2011-04-22 05:00:39