MIPSアセンブリを使用して、数値が正または負の場合にコードの別のセグメントに分岐しようとしています。これは、まさにそれを行うはずの短いセグメントです:
lbu $4, digit
and $5, $4, 0x80
srl $5, $5, 31
bgt $5, 0, positive
b negative
数字は正常に $4 にあります。最初のビットが 1 か 0 かを取得するために、後続のすべてのゼロを含む 1 に対してビットごとの AND を計算し、次に 31 ビット右にシフトして最後の位置に配置し、それが正しいかどうかを確認します。 0 より大きい場合、正の分岐、そうでない場合、負の分岐。
私はどこかでロジックを台無しにしていると確信しています。また、そのように 0 を (bgt で) 使用できるかどうか、または $0 を使用する必要があるかどうかもわかりません。
何か案は?ありがとう!