Wenn der Controller Rotations-Befehle kennt (wie z.B. die 8051) oder
einen Barrel-Shifter hat, wäre ein Blick in die intrins.h interessant.
Beim 8051 werden die RL- und RR-ASM-Befehle in C über die Funktionen
1 | unsigned char _cror_(unsigned char Value, unsigned char RotationNr);
|
2 | unsigned char _crol_(unsigned char Value, unsigned char RotationNr);
|
aufgerufen. Allerdings verliert man dadurch die Portabilität des
Programms auf andere Controller.
Mit etwas Glück hat der Compiler aber eine gute Optimierung (bzw.
passende Peepholes) und setzt auch die zuletzt genannten C-Konstrukte in
wenige ASM-Befehle für Rotation um.