UXTAB |
Étendre addition non-signé |
| ARM |
Syntaxe
|
UXTAB{cond} {Rd}, Rn, 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 |
| Rn |
Ce paramètre permet d'indiquer le registre contenant le nombre à ajouter. |
| 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 de l'octet et d'effectuer une addition naturel.
Remarques
- UXTA[B] combine extension non signée et addition : L'instruction UXTAB effectue une extension de 8 bits non signée d'un octet de Rm, puis l'additionne à
la valeur entière contenue dans Rn. Le résultat est ensuite stocké dans Rd. Cela permet d'utiliser efficacement des données compactes sans perte de précision.
- La rotation permet de sélectionner dynamiquement l'octet utile : Grâce au paramètre optionnel rotation, on peut extraire n'importe quel octet de Rm
sans avoir à utiliser des masques ou des décalages manuels. La rotation à droite de 8, 16 ou 24 bits repositionne l'octet voulu en position basse pour être étendu.
- Extension non signée : la valeur est toujours positive : Comme il s'agit d'une zéro-extension, les bits supérieurs sont remplis avec des zéros. Cela
garantit que la valeur issue de Rm reste strictement comprise entre 0 et 255, ce qui est particulièrement utile dans les contextes de calculs sur octets.
- Registre Rn utilisé comme base d'addition : La valeur contenue dans Rn sert de base à l'addition. UXTA[B] permet donc de cumuler facilement une
série de valeurs extraites de plusieurs registres Rm, utile dans des boucles d'accumulation optimisées ou dans des calculs de somme pondérée.
- Parfaite pour les manipulations de structures compactes : Cette instruction est bien adaptée au traitement de structures de données binaires compactes,
comme des tableaux d'octets ou des paquets de données compressées. Elle permet un accès efficace à une sous-partie d'un registre de 32 bits.
- Compatible avec les conditions d'exécution ARM : Le champ {cond} permet d'exécuter l'instruction sous condition, selon les drapeaux du programme (comme
EQ, NE, GT, etc.). Cela évite des instructions de saut conditionnel et rend le code plus compact et plus rapide.
- Attention au positionnement de l'octet ciblé : Une rotation incorrecte pourrait mener à une extraction d'octet non désiré. Par exemple, si on veut
étendre l'octet le plus significatif, il faudra faire une rotation de 24 bits. Une mauvaise valeur de rotation peut introduire des erreurs subtiles.
- Compatible avec les opérations d'optimisation mémoire : L'utilisation d'UXTAB permet de réduire les opérations intermédiaires classiques (masquage,
décalage, extension, addition). Cela permet d'écrire un code plus performant, plus lisible, et de gagner en cycles processeur sur les plateformes embarquées.
Dernière mise à jour : Dimanche, le 12 novembre 2017