REVSH |
Inverse le signe |
| 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 le bas de demi-mot et d'étendre les signes à 32 bits.
Remarques
- Inversion + extension de signe combinées : REVSH combine deux opérations en une seule : elle inverse les octets dans un demi-mot (16 bits), puis étend le
signe du résultat vers 32 bits. Cela signifie qu'elle conserve la sémantique de nombre signé, ce qui est utile pour manipuler correctement les valeurs négatives codées
sur 16 bits.
- Spécialement adaptée à l'interprétation de flux de données signées : Cette instruction est particulièrement utile lorsqu'on lit des données signées
16 bits dans un flux binaire, souvent utilisé en audio (PCM), en imagerie médicale, ou en traitement de capteurs. Elle permet de reconstituer correctement les entiers
signés tout en corrigeant l'ordre des octets.
- Évite un code assembleur long et fragile : Sans REVSH, il serait nécessaire d'effectuer une inversion manuelle des octets à l'aide de masques et de
décalages, suivie d'une extension de signe par condition ou manipulation de bits. REVSH évite ce genre de traitement verbeux et sujet aux erreurs, en encapsulant
tout dans une seule instruction.
- L'extension de signe est automatique : Après l'inversion des octets du demi-mot, le bit de poids fort (bit 15) est automatiquement copié dans les bits
16 à 31 du registre destination, assurant que la valeur reste correcte si elle était négative à l'origine. C'est crucial pour préserver la justesse arithmétique.
- Souvent utilisée pour l'interopérabilité avec des périphériques : Quand un microcontrôleur communique avec un périphérique (capteur, DAC/ADC,...)
transmettant des données en little-endian ou big-endian, REVSH permet de réaligner correctement les valeurs reçues tout en les convertissant proprement en entiers
signés ARM 32 bits.
- Particulièrement utile dans les opérations de désérialisation : Dans le contexte de lecture de fichiers binaires ou de protocoles réseau, les données
16 bits signées doivent souvent être converties pour un traitement ultérieur. REVSH fait gagner du temps dans les routines de désérialisation, en effectuant la
conversion et l'interprétation en une seule opération.
- Compatible avec l'exécution conditionnelle : Comme d'autres instructions ARM, REVSH peut être suffixée par un code de condition ({cond}), ce qui permet
de l'exécuter seulement si une condition spécifique est remplie, évitant ainsi l'usage d'instructions de saut conditionnel coûteuses en cycle processeur.
- Instruction très spécifique mais puissante : Bien que son usage soit spécialisé, REVSH est extrêmement utile dans des cas précis impliquant des
manipulations binaires bas niveau sur des entiers signés. Elle évite des erreurs fréquentes liées au traitement de signe ou à l'ordre des octets, notamment dans les
applications embarquées.
Dernière mise à jour : Dimanche, le 12 novembre 2017