REV16 |
Inverse 16 bits |
| ARM |
Syntaxe
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 des octets dans chaque demi-mot indépendamment.
Remarques
- Inversion par blocs de 16 bits : L'instruction REV16 ne traite pas le mot entier comme une seule unité, mais le divise en deux demi-mots de 16 bits (moitié
haute et moitié basse). Ensuite, les deux octets à l'intérieur de chaque demi-mot sont inversés, indépendamment l'un de l'autre.
- Utile pour les structures de données à champs de 16 bits : REV16 est particulièrement utile lorsqu'on manipule des tableaux de données de 16 bits, comme
des images en couleur (format RGB565) ou des échantillons audio PCM codés sur 16 bits. Cela permet de corriger rapidement l'endianness sans reconstituer manuellement
chaque valeur.
- Évite les décalages et masques complexes : Sans REV16, on devrait utiliser des combinaisons de AND, ORR, LSL, LSR pour réorganiser les octets. REV16 remplace
tout ce code par une seule instruction optimisée au niveau du matériel, ce qui réduit les erreurs et améliore les performances.
- Très utile pour l'interopérabilité : Dans les applications réseau ou les communications entre microcontrôleurs, il est courant de devoir convertir des
données 16 bits selon l'endianness du protocole utilisé. REV16 offre une solution directe à ce problème dans les environnements ARM.
- Fonctionne indépendamment de l'état du processeur : REV16 agit sur les données elles-mêmes, et non sur l'état ou les registres de contrôle. Elle est donc
prédictible et purement fonctionnelle, ce qui en fait un excellent outil dans les algorithmes portables et fiables.
- Très utilisée dans les traitements SIMD de type "natif" : Même si elle ne fait pas directement partie du SIMD (NEON), REV16 est fréquemment utilisée pour
préparer les données avant de les passer à des instructions SIMD. Par exemple, aligner les données ou corriger l'endianness pour un traitement parallèle correct.
- Compatible avec l'exécution conditionnelle : Comme beaucoup d'instructions ARM, REV16 accepte un suffixe {cond} permettant une exécution conditionnelle. Cela
permet de l'intégrer efficacement dans des blocs de code optimisés, sans avoir à ajouter de branchements explicites.
- Particulièrement utile dans les routines de sérialisation : Lorsqu'on convertit des structures mémoire internes en flux binaires (pour l'écriture sur disque
ou la transmission réseau), REV16 permet de garantir que chaque champ 16 bits est bien réorganisé selon le format attendu. Cela rend la sérialisation/désérialisation plus
rapide et fiable.
Dernière mise à jour : Dimanche, le 12 novembre 2017