rlwinm的C ++等价物是什么? (PowerPC)下

时间:2016-03-27 04:36:55

标签: c++ powerpc

我正在扭转我的一些旧东西,并且遇到了我不太理解的指示。我用C ++重写它以便于阅读。

指示:

rlwinm r4, r4, 2, 0, 29

进行一些研究我得出结论,这表示左旋转然后用面具旋转。但由于我对C ++很陌生,我似乎无法用C ++编写它。

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于C ++中的旋转没有直接语言支持,因此您需要使用两个班次:

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

某些编译器具有旋转功能,优化器可将两个移位识别为旋转。这假设r4是无符号的,32位宽。如果签名,则需要屏蔽右移。