Assembly 做一个;";MIPS中的命令

Assembly 做一个;";MIPS中的命令,assembly,mips,Assembly,Mips,我试着做一个命令:min$t1,$t2,$t3 $t1将获得$t2和$t3之间的最小值的绝对值 有什么想法吗 谢谢 嘿,伙计们找到了答案 slt $t1,$t2,$t3 bne $t1,1,label addi $t1,$t2,0 j exit label: addi $t1,$t3,0 exit: 希望能有所帮助嘿,伙计们找到了答案 slt $t1,$t2,$t3 bne $t1,1,label addi $t1,$t2,0 j exit label: addi $t1,$t3,0 exit

我试着做一个命令:min$t1,$t2,$t3

$t1将获得$t2和$t3之间的最小值的绝对值

有什么想法吗


谢谢

嘿,伙计们找到了答案

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

希望能有所帮助

嘿,伙计们找到了答案

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

希望它有帮助

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

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
slt$t1、$t2、$t3
低于$t1,$零,$t1#t1=(t2
另一种选择:

or $t4,$zero,$zero
slt $t1,$t2,$t3
movn $t4,$t3,$t1  # t4 = (t2 < t3) ? t3 : 0
movn $t1,$t2,$t1  # t1 = (t2 < t3) ? t2 : 0
xor $t1,$t1,$t4   # t1 = (t2 < t3) ? (t2 ^ t3) : 0
xor $t1,$t1,$t3   # t1 = (t2 < t3) ? t2 : t3
或$t4、$0、$0
slt$t1、$t2、$t3
movn$t4、$t3、$t1#t4=(t2
这也可以在不使用任何分支的情况下完成:

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
slt$t1、$t2、$t3
低于$t1,$零,$t1#t1=(t2
另一种选择:

or $t4,$zero,$zero
slt $t1,$t2,$t3
movn $t4,$t3,$t1  # t4 = (t2 < t3) ? t3 : 0
movn $t1,$t2,$t1  # t1 = (t2 < t3) ? t2 : 0
xor $t1,$t1,$t4   # t1 = (t2 < t3) ? (t2 ^ t3) : 0
xor $t1,$t1,$t3   # t1 = (t2 < t3) ? t2 : t3
或$t4、$0、$0
slt$t1、$t2、$t3
movn$t4、$t3、$t1#t4=(t2
这里是signed
min()
的一个实现,没有问题所要求的
abs()
特例。希望对不需要该部件的人有用:

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

我认为这是最好的方法…

这是一个signed
min()
的实现,没有问题所要求的
abs()
特例。希望对不需要该部件的人有用:

slt $at, $t2, $t3
add $t1, $t3, $zero
movn $t1, $t2, $at
我认为这是最好的方式