Каким будет эквивалент C ++ для rlwinm? (PowerPC)

Я перевернул некоторые свои старые вещи и наткнулся на инструкцию, которую я не совсем понимаю. Я переписываю его на C ++ для удобства чтения.

Инструкция:

rlwinm r4, r4, 2, 0, 29

Проведя некоторые исследования, я пришел к выводу, что это означает вращение влево и с маской. Но так как я довольно новичок в C ++, я не могу написать это на C ++.

Заранее спасибо.

0

Решение

Поскольку в C ++ нет прямой языковой поддержки поворота, вам нужно использовать две смены:

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

Некоторые компиляторы имеют функцию поворота, и оптимизатор может распознавать эти две смены как повороты. Это предполагает, что r4 без знака и шириной 32 бита. Если он подписан, вам нужно скрыть правую смену.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]