2016-03-27 18 views
0

私は古いものを逆にしていて、私は理解できませんでした。私はC++で読みやすいように書き直しています。C++と同等のものはrlwinmとは何でしょうか? (PowerPC)

命令:

rlwinm r4, r4, 2, 0, 29 

私は、これは当時とマスクで回転、左を表しているとの結論に達したいくつかの研究を行います。しかし、私はC++には全く新しいので、C++で書くことはできません。

ありがとうございます。

+0

回転しているものと、AND演算を使用しているものの例を教えてください。 –

+0

私はこれを引用してはいけませんが、マニュアルでは 'r4 =(4 * r4)&0xfffffffc – infixed

+0

のように見えますが、これをポータブルC++に翻訳するのを手伝ってください。あなたが合理的な試みを自分で行ったかどうかを確認してください。そうでなければ、宿題のように見えます。 –

答えて

0

C++での回転のための直接の言語サポートがありませんので、次の2つのシフトを使用する必要があります。

r4 = ((r4 << 2) | (r4 >> 30)) & 0x3FFFFFFF; 

いくつかのコンパイラは、回転機能を持っており、オプティマイザは、回転する2つのシフトを認識することができます。これは、r4が符号なしで32ビット幅であることを前提としています。署名されている場合は、右シフトをマスクする必要があります。

関連する問題