UXTH |
Étendre un zéro de demi-mot non-signé |
| ARM |
Syntaxe
|
UXTH{cond} {Rd}, Rm {,rotation}
|
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 |
| Rm |
Ce paramètre permet d'indiquer le registre contenant la valeur à étendre. |
| rotation |
Ce paramètre optionnel permet d'indiquer la rotation à appliquer : |
| ROR #8 |
Cette constante permet d'indiquer que la valeur du paramètre Rm doit effectuer une rotation vers la gauche de 8 bits. |
| ROR #16 |
Cette constante permet d'indiquer que la valeur du paramètre Rm doit effectuer une rotation vers la gauche de 16 bits. |
| ROR #24 |
Cette constante permet d'indiquer que la valeur du paramètre Rm doit effectuer une rotation vers la gauche de 24 bits. |
Description
Cette instruction permet d'étendre les zéro d'un demi-mot.
Remarques
- UXTH est utilisée pour extraire et étendre une valeur 16 bits : L'instruction UXTH permet d'extraire les 16 bits de poids faible (un demi-mot) d'un
registre source Rm, puis de l'étendre à 32 bits dans le registre de destination Rd, en ajoutant des zéros dans les bits de poids fort. C'est donc une extension non
signée.
- La rotation permet de cibler un demi-mot dans une position spécifique : Grâce au paramètre optionnel rotation, on peut extraire un demi-mot situé à une
autre position que les 16 bits de poids faible. Par exemple, avec ROR #8, on peut accéder aux bits 8 à 23. Cela évite les masquages et décalages manuels.
- Utile pour traiter des données compressées ou issues de périphériques : UXTH est couramment utilisée pour traiter des flux de données 16 bits provenant
de périphériques (comme des ADCs ou des UARTs) tout en les stockant dans des registres 32 bits. Cela permet de travailler efficacement sur des architectures 32 bits.
- Permet de gérer proprement des valeurs non signées : L'extension non signée signifie que la partie étendue est remplie de zéros, ce qui est adapté pour
les valeurs logiques ou positives. C'est différent de SXTH, qui ferait une extension signée avec propagation du bit de signe.
- N'altère pas la valeur originale du registre source : Comme UXTH utilise un registre de destination différent (Rd), elle ne modifie pas le contenu du
registre source Rm. Cela permet d'utiliser la valeur étendue sans affecter la donnée originale.
- Peut remplacer plusieurs instructions classiques : Dans certains cas, UXTH peut éviter l'usage combiné de AND, LSR et MOV, ce qui réduit le nombre
d'instructions nécessaires pour manipuler des sous-parties d'un registre, et améliore la lisibilité et la performance du code.
- Compatible avec des conditions d'exécution (suffixe {cond}) : Grâce au suffixe {cond}, on peut exécuter UXTH de manière conditionnelle, en fonction du
résultat d'une opération précédente. Cela permet de créer des comportements compacts et conditionnels sans branchement explicite.
- Attention aux rotations non triviales : Les rotations possibles sont fixes : 8, 16 ou 24 bits. Il faut choisir le bon décalage pour cibler la bonne
partie du registre. Une mauvaise rotation peut conduire à extraire des bits incorrects et à fausser les résultats.
Dernière mise à jour : Dimanche, le 12 novembre 2017