blez
疑似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'
