2016-03-15 88 views
2

我正在用MIPS编写一个程序,但无法围绕下面的语句写下下面的语句。我如何在MIPS指令集中编写这样的逻辑语句?将C转换为MIPS

return a > b ? a : b; 
+0

查找'SLT'和'BEQ'在MIPS指令集的参考。 – Michael

回答

1
  • return:一些值返回到被叫方(如果表达呈现)。
  • A ? B : C:这是条件运算符。如果A为真(非零),则评估B。否则,评估C

如果ab签署的32位整数,它应该是这样的:

# assuming 
# a = $t0 
# b = $t1 
# return value = $v0 

slt $t2, $t1, $t0  # $t2 = (b < a) 
beq $t2, $zero, nottrue # if (!(a > b)) goto nottrue 
addui $v0, $t0, $zero # return value = a (not harmful even if executed when jump is taken) 
jr $ra     # return 
sll $zero, $zero, 0  # nop: prevent instruction after branch from being executed 
nottrue: 
addui $v0, $t1, $zero # return value = b 
jr $ra     # return 
sll $zero, $zero, 0  # nop: prevent instruction after branch from being executed 
+0

谢谢迈克,你是一个巫师 –