数字的确定符号



我只是试图分支到不同的代码段,给定一个数字是正数或负数,使用MIPS汇编,这是应该这样做的短段:

lbu $4, digit
and $5, $4, 0x80
srl $5, $5, 31
bgt $5, 0, positive
b negative

该数字成功为 4 美元,我按位 AND 它针对一个带有所有后续零的 1,以便得到第一位是 1 还是 0,然后我向右移动 31 位,使其位于最后一个位置,然后我检查它是否大于 0,如果是,分支为正,否则, 分支负数。

我确定我在某处搞砸了逻辑,我也不确定我是否可以像这样使用 0(在 bgt 中),或者我是否应该使用 $0

有什么想法吗?谢谢!

我认为您正在将字节移出图片。使用您的方法,您应该将其移动 7 位,而不是 31 位。但。。。

根据 http://www.ece.umd.edu/~manoj/759M/MIPSALM.html,您可以使用lb,而不是使用lbu。这将复制您正在加载的字节的第 7 位的值,并放入目标寄存器的第 8-31 位中。然后,您可以使用bgez来执行分支。

lb $4, digit
bgez $4, positive
b negative

但是我一生中从未写过一个字节的MIPS汇编器,你也许应该对这个答案持保留态度。祝你好运!

最新更新