在MIPS中制作“min”命令

时间:2016-03-13 11:07:28

标签: assembly mips

我试图将命令设为:min $ t1,$ t2,$ t3

$ t1将获得$ t2&之间的最小值的绝对值。 $ T3

任何想法?

谢谢!

3 个答案:

答案 0 :(得分:1)

这也可以在不使用任何分支的情况下完成:

array1.zip(array2).each do |x, y|
  puts x, y
end

另一种选择:

slt $t1,$t2,$t3
sub $t1,$zero,$t1  # t1 = (t2 < t3) ? 0xFFFFFFFF : 0
or $t4,$t3,$t1     # t4 = (t2 < t3) ? 0xFFFFFFFF : t3
xor $t4,$t4,$t1    # t4 = (t2 < t3) ? 0 : t3
and $t1, $t1, $t2  # t1 = (t2 < t3) ? t2 : 0
or $t1, $t1, $t4   # t1 = (t2 < t3) ? t2 : t3

答案 1 :(得分:1)

以下是签名min()的实现,没有问题要求的abs()特殊情况。希望对那些不需要那部分的人有用:

slt $at, $t2, $t3
add $t1, $t3, $zero
movn $t1, $t2, $at

我认为这是最好的方式......

答案 2 :(得分:0)

嘿,伙计们找到了答案

slt $t1,$t2,$t3
bne $t1,1,label
addi $t1,$t2,0
j exit
label: addi $t1,$t3,0
exit:

希望有所帮助