私は、RAR Filter VM言語内でビットを左にN位置回転させた単語を返す小さなサブルーチンを実装しようとしています。これは、x86に非常によく似ており、すべての目的と目的でx86と考えることができます。 「拡張子なし」。
複製しようとしているコードの一部(新しく標準化されたSHA-3標準Keccakの「Theta」ステップの一部)
(((x) << (y)) | ((x) >> (64 - (y))))
簡単そうに見えますが、RAR VMは32ビット幅のレジスタを使用しますが、実装する必要のある小さなルーチンには64ビット値を指定できます。
x<<yおよびx>>64 --yを再構築できるように、結果を別のレジスタshl
に「オーバーフロー」させる最も自然な方法は何ですか?shr
タイトルが示すように、私はオーバーフローフラグにアクセスできません。
注:これは、アセンブラーからのコードのサンプルです。これにより、私が使用する必要のある命令を確認できます。https://gist.github.com/581f7e162eebd652ee4b