両方の指示について少し混乱しています。最初に、スキャンされた値が 0 で、結果が undefined/bsr または bitsize/lzcnt であるという特殊なケースを破棄しましょう。この違いは明確であり、私の質問の一部ではありません。
バイナリ値を取りましょう0001 1111 1111 1111 1111 1111 1111 1111
Intelの仕様によると、結果lzcnt
は3です
Intel の仕様によると、結果bsr
は 28 です
lzcnt
カウント、bsr
インデックスまたはビット 0 (LSB) からの距離を返します。
利用可能な CPU に BMI がない場合のように、どのように両方の命令を同じにして、どのようlzcnt
にエミュレートすることができますか? それとも、msbbsr
の場合はビット 0ですか? bsr
Intel の仕様の両方の「コード操作」も異なります。1 つは左からカウントまたはインデックスを作成し、もう 1 つは右からカウントまたはインデックスを作成します。
誰かがこれに光を当てることができるかもしれません.フォールバックへのフォールバックが同じ結果で機能するBMI/lzcnt
かどうかをテストするための指示がないCPUはありません(スキャンする値0の特別なケースは決して起こらないため).bsr