在MIPS中表达此声明

时间:2011-07-24 05:03:15

标签: c mips spim

我刚开始使用SPIM模拟器进行MIPS。有人可以帮我转换这个陈述吗?

if(as>47 && as<58) function();
else continue;

提前完成。 :)

1 个答案:

答案 0 :(得分:5)

我的MIPS有点生疏,如果没有轻微调整就行不通,请提前道歉,但这应该会让你对你想要做的事情有所了解。

(如果你发现这不起作用,请告诉我,以便我可以编辑帖子)

# Assume 'as' is in $s0
li $t2, 1           # $t2 = 1
slti $t0, $s0, 58   # $t0 = $s0 < 58
addi $t1, $s0, 1    # $t1 = $s0 + 1
slti $t1, 47, $s0   # $t1 =  47 < $s0 + 1 (sgti does not exist)
and $t0, $t0, $t1   # $t0 = $t0 && $t1

bne $t0, $t2, cont      # if ($t0 != $t2) goto cont

function: # Label is optional.
# If both conditions are true, the bne won't branch, so we will
# fall through to function: and run whatever code it has.
# otherwise, we jump to cont: and all the func code is skipped.
    # ...

cont: # continue;

    # ...

请注意,现在,function()实际上不是一个函数。但是你可以jal function并将该块驻留在其他地方。这是一个good reference of the MIPS instruction set

MIPS中的诀窍是,由于你没有大于指令,你必须使用相反的指令。

请记住&gt;的反面不是&lt;,它是&lt; =。