2017-03-21 6 views

答えて

1

すべてのARMプロセッサが除算またはモジュロの直接命令を持っているわけではないため、ほとんどの場合、モジュロ演算の呼び出しは、たとえば、関数呼び出しとして終了します。 ___modsi3

この場合、8を法とするとき、値が負でないと仮定できる場合、% 8の部分を& 7とすることができます。その場合、あなたのケースのアセンブリは次のようになります:

add rA, rA, rB 
and rC, rA, #7 
+0

これは特定の値では失敗するため、これはどのような場合ですか。例えば71 mod 15 = 6 test = 11である。私が何かを逃していない限り。 – InfinitelyManic

+0

モジュロ8は7であり、8は8の累乗であるため、モジュロ15は基本2を使用することとはまったく異なるもので、実際に分けなければならない演算です。 –

+0

@old_timer、そうですね。減算ベースのmod関数を使用しました。しかし、これは、ループのためにmod関数に基づくdiv(利用可能な場合)よりもはるかに遅いです。 – InfinitelyManic

関連する問題