RRX |
Rotation vers la droite avec étendue |
| ARM |
Syntaxe
Paramètres
| Nom |
Description |
| S |
Ce paramètre optionnel permet d'indiquer le suffixe. Si ce paramètre est spécifié, les drapeaux de condition sont mise à jour dans le résultat de l'opérande |
| cond |
Ce paramètre optionnel permet d'indiquer le code de condition |
| Rd |
Ce paramètre permet d'indiquer le registre de destination. |
| Rm |
Ce paramètre permet d'indiquer le registre contenant le premier opérande. Cet opérande est décalé vers la droite. |
Description
Cette instruction permet d'effectuer une rotation de bits vers la droite avec le bit de retenue.
Remarques
- RRX est une rotation spéciale à droite avec le drapeau C : L'instruction RRX réalise une rotation à droite de 1 bit, mais ce qui la rend unique est
qu'elle fait intervenir le drapeau de retenue (Carry flag, C). Le bit le plus significatif (bit 31) est rempli avec la valeur de C, tandis que le bit 0 est déplacé
dans C.
- Très utile pour la gestion manuelle des retenues : En décalant avec le bit de retenue, RRX est souvent utilisée dans des algorithmes arithmétiques
complexes comme les divisions longues ou la multiplication binaire manuelle, où l'on veut contrôler la propagation de la retenue entre opérations.
- Seulement 1 bit de rotation : Contrairement à ROR pouvant effectuer une rotation de plusieurs bits (jusqu'à 31), RRX ne tourne que d'un seul bit.
C'est une instruction spécifique et ciblée, optimisée pour certaines opérations précises de bas niveau.
- RRX n'a pas de version avec constante ou registre de décalage : À la différence de ROR, RRX ne prend ni une constante ni un registre pour spécifier
un décalage. Elle est donc très prévisible et déterministe, et toujours limitée à une rotation de 1 bit avec interaction du bit C.
- Le suffixe S met à jour les drapeaux conditionnels : Comme d'autres instructions logiques, le suffixe S permet à RRX de mettre à jour les drapeaux
du registre d'état (N, Z, C). C'est important si l'on veut enchaîner avec des instructions conditionnelles basées sur ces résultats.
- Affecte uniquement les registres, pas la mémoire : RRX est une instruction purement interne au CPU, elle n'interagit pas avec la mémoire. Cela en
fait une instruction rapide, idéale pour manipuler des données binaires dans des registres sans overhead mémoire.
- Souvent utilisée avec ADC et SBC : RRX est très souvent combinée avec des instructions comme ADC (addition avec retenue) et SBC (soustraction avec
retenue), dans des routines de calcul multi-mots où la gestion fine de la retenue est essentielle.
- Utile dans la cryptographie et les CRC : En tant que rotation intégrant le carry, RRX est parfois utilisée dans des implémentations d'algorithmes de
chiffrement ou de contrôle d'intégrité, comme les CRC. Ces algorithmes font fréquemment appel à des opérations bit à bit précises et déterministes.
Dernière mise à jour : Dimanche, le 12 novembre 2017