Mips 分支:测试相等性

hus*_*oud 0 hardware branch mips cpu-registers

我需要知道如何在不使用分支的情况下测试 MIPS 中两个寄存器的相等性?我需要制作一条与 beq 相同的新指令,而不使用分支...标签部分可以通过使用跳转指令轻松完成,但我们如何检查相等性?提前致谢

Mic*_*ael 5

如果有两个数字XY,并且X - Y等于 0,那么XY相等。

因此,例如,如果您要比较的两个值位于$t0和中$t1

# $t2 will be 0 if $t0 and $t1 are equal, and non-zero otherwise
subu $t2, $t0, $t1
Run Code Online (Sandbox Code Playgroud)

如果您想将结果标准化为 0(不等于)或 1(等于),您可以将上面的内容扩展为:

# Set $t2 to 1 if it's non-zero
sltu $t2, $zero, $t2
# Flip the lsb so that 0 becomes 1, and 1 becomes 0
xori $t2, $t2, 1
Run Code Online (Sandbox Code Playgroud)