MIPS大于,小于等于,大于等于

时间:2013-03-03 07:13:35

标签: assembly mips

给定两个寄存器$s0$s1,如何仅使用slt(小于设置)和beq将以下伪代码转换为MIPS汇编语言, bne(如果相等则为分支,如果不相等则为分支)指令。

   if ($s0 > $s1) { goto label1 }
   if ($s0 >= $s1) { goto label2 }
   if ($s0 <= $s1) { go to label3 }

2 个答案:

答案 0 :(得分:23)

slt $t1,$s1,$s0      # checks if $s0 > $s1
beq $t1,1,label1     # if $s0 > $s1, goes to label1
beq $s1,$s2,label2   # if $s0 = $s2, goes to label2 
beq $t1,$zero,label3 # if $s0 < $s1, goes to label3

我假设伪代码是按顺序执行的,而且你不能去两个不同的标签。

答案 1 :(得分:1)

我认为应该是:

stl $at, $s1, $s0
bne $at, $zero, label1

stl $t0, $s0, $s1
beq $t0, $zero, label2

stl $t1, $s1, $s0
beq $t1, $zero, label3

label1:
label2:
label3: