2015-06-15 5 views
1

Я хочу перевести этот код Java в MIPS. Я получаю синтаксическую ошибку. можете ли вы сказать мне, что я делаю неправильно. JavaПередача параметра в mips

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 
+2

Где вы принимаете ошибку? –

ответ

0

Ваша проблема эта строка в методе "setCount": lw count($0), $t0

Load Word не может использоваться таким образом! Вы не можете использовать count в качестве операнда.

Если вы пытаетесь загрузить count в $ t0, сделайте следующее: lw $t0, count($0)

Я хотел бы призвать вас использовать MARS MIPS Emulator. Он имеет встроенную проверку ошибок, которая работает, довольно хорошо.

SIDE ПРИМЕЧАНИЕ: Немного о вашем форматировании. Хотя это не критично, то синтаксический более приемлемое для форматирования addi заявления следующим образом, для облегчения читаемости:

addi $v0, <some number>, $zero 

Кроме того, это один. add $a0, $v0, $zero

Смежные вопросы