ARM7コマンドセットは、アセンブラで32ビット値を任意の量だけ右回転する効率的な方法を提供します。演算の第2オペランドの場合、シフターオペランドとしてror #nを指定することで「無料」になりますが、64ビット整数の場合、命令セットによる直接サポートは提供されません。1、31、33、または63ビット位置(0または32は言うまでもなく)でローテーションする特殊なケースを除いて、私は4つの命令を使用して64ビット値をローテーションする方法しか知りません(非常に簡単なので、書きませんここにあります)。4つの特殊なケースでは、これを3つの命令に減らすことができますが、一般的にそれを行う方法がわかりません。だからここに私の質問があります:
2つのレジスタ(たとえばR0とR1)に64ビット値がある場合、3つのARM7命令だけでこの値をn位置(任意のnに対して)右回転させることは可能ですか?