UXTB16 |
Étendre un zéro de 2 octets non-signé |
| ARM |
Syntaxe
|
UXTB16{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 de 2 octets.
Remarques
- UXTB16 étend deux octets de manière indépendante : L'instruction UXTB16 est conçue pour extraire deux octets (chacun de 8 bits) séparément depuis un
registre 32 bits, puis les étendre indépendamment à 16 bits en ajoutant des zéros. Les deux demi-mots résultants sont ensuite entreposés dans les deux moitiés du
registre de destination Rd.
- Utile pour le traitement parallèle de données de 8 bits : Cette instruction est particulièrement utile pour traiter deux valeurs de 8 bits simultanément,
comme des pixels ou des échantillons audio compressés. Cela améliore les performances dans des algorithmes SIMD (traitement parallèle sur un même registre).
- Extension non signée : pas de propagation du bit de signe : L'extension réalisée est non signée, donc les bits étendus sont remplis avec des zéros, ce
qui convient aux données positives ou brutes, comme des octets de texte ou des intensités lumineuses.
- La rotation permet de sélectionner les octets ciblés : Le paramètre rotation permet de faire une rotation droite du registre source, ce qui modifie quels
octets seront étendus. Par exemple, une ROR #8 fait passer l'octet situé à la position 8 vers la position 0. Cela offre de la flexibilité sans avoir à manipuler le
registre avec plusieurs instructions.
- Souvent confondue avec UXTH, mais fonctionnement différent : Contrairement à UXTH, étendant un seul demi-mot (16 bits), UXTB16 gère deux octets séparément,
ce qui en fait une instruction duale, parfaite pour les applications où chaque octet doit être traité comme une entité individuelle, avec son extension propre.
- Optimisation pour les architectures ARM dotées d'instructions SIMD : UXTB16 appartient à un ensemble d'instructions tirant parti des capacités SIMD de
certaines architectures ARM, notamment avec l'extension Thumb-2 ou ARMv6 et supérieures. Elle permet de traiter plus de données en moins d'instructions, ce qui est un
gain en efficacité.
- Le registre de destination Rd reçoit les deux résultats côte à côte : Les deux octets étendus sont stockés dans le registre Rd : l'un dans les
16 bits de poids faible, l'autre dans les 16 bits de poids fort. Cela permet d'enchaîner rapidement avec d'autres instructions vectorielles ou des opérations
arithmétiques duales.
- Exécutable conditionnellement grâce au suffixe {cond} : Le suffixe {cond} permet d'exécuter l'instruction uniquement si une certaine condition est remplie,
en fonction des drapeaux d'état (N, Z, C, V). Cela réduit la nécessité de faire des branchements, et permet d'optimiser les chemins d'exécution conditionnels.
Dernière mise à jour : Dimanche, le 12 novembre 2017