以mips传递参数

时间:2015-06-15 18:37:47

标签: java mips

我想将这个java代码翻译成MIPS。我收到语法错误。你能告诉我我做错了吗? Java

public static void setCount(int count)
{
 IntegerMath.count = count;
} 

Mips

.globl setCount
#---------------
.text
setCount: #-----------------
lw count($0), $t0
jr $ra
#----------------------------- `

Java

System.out.println(IntegerMath.getCount());
int a = new Scanner(System.in).nextInt();
IntegerMath.setCount(a);
System.out.println(IntegerMath.getCount());`

Mips

#--------------------------------------------------
 jal getCount   #System.out.println(IntegerMath.getCount())  
 add $a0, $0, $v0  
 addi $v0, $0, 1   
 syscall  
 #-----------------------------------------------------  
 addi $v0, $0, 5 # readInt make new variable   
 syscall  
 add $t0, $0, $v0 #set t0 to value  
 #------------------------------------------  
 jal setCount   
add $a0, $0, $v0  
#-------------------------------   
addi $v0, $0, 1  
syscall  
#-------------------------    
 addi $sp, $sp, 4  
 lw $ra, 0($sp)  
 jr $ra  

1 个答案:

答案 0 :(得分:0)

你的问题就在你的" setCount"方法:lw count($0), $t0

加载Word不能以这种方式使用! 您不能将count用作操作数。

如果您尝试加载count  进入$ t0,执行此操作:lw $t0, count($0)

我建议您使用 MARS MIPS Emulator 。它内置了错误检查,非常有效。

SIDE注意: 只是关于你的格式。虽然它并不重要,但从语法上来说,格式化addi语句更为可接受,如下所示,以便于阅读:

addi $v0, <some number>, $zero

此外,这一个。 add $a0, $v0, $zero