我只是尝试使用 MIPS 程序集在给定数字是正数或负数的情况下分支到不同的代码段,这是应该这样做的短段:
lbu $4, digit
and $5, $4, 0x80
srl $5, $5, 31
bgt $5, 0, positive
b negative
数字成功地在 $4 中,我将它与后面的所有零的 1 逐位与,以获得第一位是 1 还是 0,然后我右移 31 位,使其位于最后一个位置,然后我检查它是否大于 0,如果是,则分支为正,否则,分支为负。
我确定我在某处搞砸了逻辑,我也不确定我是否可以像那样使用 0(在 bgt 中),或者我是否应该使用 $0
有任何想法吗?谢谢!