Assembly MIPS中大于、小于等于、大于等于
给定两个寄存器Assembly MIPS中大于、小于等于、大于等于,assembly,mips,Assembly,Mips,给定两个寄存器$s0,$s1,如何仅使用slt(设置为小于)和beq以及bne(分支如果相等,分支如果不相等)指令将以下伪代码转换为MIPS汇编语言 if ($s0 > $s1) { goto label1 } if ($s0 >= $s1) { goto label2 } if ($s0 <= $s1) { go to label3 } if($s0>$s1){goto label1} 如果($s0>=$s1){goto label2} 如果($s0slt
$s0
,$s1
,如何仅使用slt
(设置为小于)和beq
以及bne
(分支如果相等,分支如果不相等)指令将以下伪代码转换为MIPS汇编语言
if ($s0 > $s1) { goto label1 }
if ($s0 >= $s1) { goto label2 }
if ($s0 <= $s1) { go to label3 }
if($s0>$s1){goto label1}
如果($s0>=$s1){goto label2}
如果($s0slt$t1,$s1,$s0#检查$s0>s1
beq$t1,1,标签1#如果$s0>s1,则转到标签1
beq$s1,$s2,label2#如果$s0=$s2,则转到label2
beq$t1,$0,标签3#如果$s0<$s1,则转到标签3
我假设伪代码按顺序执行,并且不能转到两个不同的标签。我认为应该是:
slt $at, $s1, $s0
bne $at, $zero, label1
slt $t0, $s0, $s1
beq $t0, $zero, label2
slt $t1, $s1, $s0
beq $t1, $zero, label3
label1:
label2:
label3:
完全不适用于MIPS。首先,MIPS没有标志寄存器。请仔细阅读。当然它是适用的。当然,MIPS没有标志寄存器,但这与此无关。slt
将在$t1中放置一个值,如果$s0>$s1beq$t1,1,label1
应该是bnez$t1,label1
或bne$t1,
。没有带常量操作数的beq/bne指令(零寄存器除外)。汇编程序可能正在幕后为您做一些工作。
slt $at, $s1, $s0
bne $at, $zero, label1
slt $t0, $s0, $s1
beq $t0, $zero, label2
slt $t1, $s1, $s0
beq $t1, $zero, label3
label1:
label2:
label3: