bgtz
疑似lyszt.netはbgtzおよびその他のRISC-V命令をより詳しく扱っています。
説明
bgtz は、レジスタの値が正の場合に分岐します。名前は branch if greater than zero を意味します。以下の形式は、rs がゼロより大きい場合にラベル位置へジャンプし、そうでなければ次の命令へフォールスルーします。
bgtz rs, label
アセンブラはこれを疑似命令として扱い、以下に示す命令へ書き換えます。これは zero がレジスタより小さいかどうかを問い合わせます。
blt zero, rs, label
RISC-V には greater than 用の分岐がないため、オペランドが交換され、less-than 分岐が処理を行います。これは bgt が構築されるのと同じ方法です。比較は符号付きです。ゼロは分岐しないため、これが bgtz と bgez を区別します。基になる分岐については blt を参照してください。
bgtz は、処理すべきものが残っている間継続すべきループ、たとえば残りの項目数がゼロより大きい場合に適しています。また、結果がゼロより大きいかどうかをテストします。
bgtz a0, found
上記の行は、a0 が 1 以上を保持する場合に found へジャンプします。値が 0 または任意の負の数の場合は、次の命令へ続きます。
展開先
blt zero, rs, label
アセンブラはこの疑似命令を、上記に示された実際の命令または複数の命令に置き換えます。
例
li t0, 4 bgtz t0, done # t0 > 0, so jump to 'done'
