REV |
Inverse |
|---|---|
| ARM | |
Syntaxe
| REV{cond} Rd, Rn |
Paramètres
| Nom | Description |
|---|---|
| cond | Ce paramètre optionnel permet d'indiquer le code de condition |
| Rd | Ce paramètre permet d'indiquer le registre de destination. |
| Rn | Ce paramètre permet d'indiquer le registre contenant l'opérande. |
Description
Cette instruction permet d'inverser l'ordre d'octets dans un mot.
Remarques
- Inversion de l'ordre des octets, pas des bits : Contrairement à l'instruction RBIT inversant les bits, REV agit sur les octets d'un mot de 32 bits. Elle échange les positions des 4 octets : le premier devient le quatrième, le second devient le troisième,... Cela revient à faire un byte-wise reversal du mot.
- Utile pour le changement d'endianness : REV est souvent utilisée pour convertir des données entre little-endian et big-endian. C'est crucial pour assurer la compatibilité lors des échanges de données entre systèmes ayant des conventions d'endianness différentes, comme certains protocoles réseau ou systèmes embarqués.
- Optimise le traitement des flux de données : Dans les applications de communication ou de lecture/écriture de fichiers binaires, REV permet d'adapter rapidement la structure des données sans avoir à écrire de code complexe de permutation manuelle. Cela améliore la lisibilité et la fiabilité du code.
- Instruction simple mais très efficace : Plutôt que de permuter chaque octet avec des décalages (LSL, LSR) et des masques (AND, ORR), REV effectue tout cela en une seule instruction, optimisée au niveau matériel. Cela se traduit par un gain de performance non négligeable.
- Peut être utilisée avec des types de données spécifiques : Dans certaines extensions de l'architecture ARM, comme Thumb-2, il existe des variantes de REV :
- Très utile en traitement de signal et audio : Lorsqu'on manipule des échantillons audio ou des valeurs codées sur plusieurs octets, l'ordre d'octets est essentiel pour interpréter correctement les données. REV permet de garantir que les valeurs numériques sont traitées avec le bon ordre de poids.
- Instruction conditionnelle comme les autres instructions ARM : Grâce au suffixe {cond}, REV peut être exécutée conditionnellement, selon les drapeaux d'état du processeur. Cela évite l'utilisation d'instructions de saut conditionnel et favorise un pipeline plus fluide et rapide.
- Facilement intégrable dans les conversions de structures : Lorsque des structures complexes (structs) sont échangées entre des périphériques ou des systèmes embarqués, REV permet d'adapter rapidement chaque champ multioctet. Cela facilite le développement d'interfaces matérielles robustes, sans dépendre de bibliothèques externes.
| Variante | Description |
|---|---|
| REV16 | Inverse les deux moitiés de chaque mot de 16 bits |
| REVSH | Inverse deux octets et applique un signe étendu |
Ces variantes permettent une manipulation encore plus fine selon le contexte.
Dernière mise à jour : Dimanche, le 12 novembre 2017