blez疑似

blez

疑似
RISC-V アセンブリ 参考

lyszt.netはblezおよびその他のRISC-V命令をより詳しく扱っています。

説明

blez は、レジスタの値がゼロまたは負の場合に分岐します。この名前は「less than or equal to zero なら分岐する」という意味です。以下の形式は、rs がゼロ以下のときにラベル位置へジャンプし、それ以外の場合は次の命令へフォールスルーします。

blez rs, label

アセンブラはこれを疑似命令として扱い、以下に示す命令へ書き換えます。これは zero がレジスタ以上かどうかを問い合わせるものです。

bge zero, rs, label

RISC-V には less-than-or-equal 分岐が存在しないため、オペランドが入れ替えられ、bge がその役割を担います。これは ble が構成されるのと同じ方法です。比較は符号付きです。ゼロ分岐は blez を bltz から区別するものであり、bgtz の反対であるため、任意の値に対して必ずどちらか一方だけが分岐します。基になる分岐については bge を参照してください。

blez は、やるべきことが残っていないかどうかのチェックに適しています。残りの項目数を処理するループは、カウントがゼロになった時点、またはそれを下回った時点で抜けられます。

blez t0, done

上記の行は、t0 が 0 または負のときに done へジャンプします。

展開先

bge zero, rs, label

アセンブラはこの疑似命令を、上記に示された実際の命令または複数の命令に置き換えます。

例

li t0, 0
blez t0, done   # t0 <= 0, so jump to 'done'