UXTB |
Étendre un zéro d'octet non-signé |
| ARM |
Syntaxe
|
UXTB{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 octet.
Remarques
- UXTB permet d'étendre un seul octet à 32 bits : L'instruction UXTB sert à extraire un octet (8 bits) à partir d'un registre 32 bits, et à l'étendre en
remplissant les 24 bits de poids fort avec des zéros. Le résultat final est stocké dans le registre de destination Rd.
- Extension non signée : uniquement des zéros ajoutés : Comme l'extension est non signée, les bits de poids fort sont remplis avec des zéros, indépendamment
de la valeur du bit de signe d'origine. Cela garantit un comportement sécurisé pour des valeurs brutes ou positives.
- Le champ rotation permet de sélectionner l'octet à étendre : Grâce au paramètre rotation, on peut appliquer une rotation à droite du registre source
Rm avant d'en extraire l'octet. Cela permet de choisir dynamiquement l'octet à étendre, parmi les quatre présents dans un registre 32 bits.
- Très utile pour l'accès à des tableaux d'octets : UXTB est souvent utilisée pour lire des données octet par octet dans des registres chargés avec
plusieurs éléments. Elle est idéale pour accéder à des buffers, des chaînes de caractères ou des pixels compressés dans un registre unique.
- Moins coûteuse que des masques manuels avec AND/LSR : Plutôt que d'utiliser plusieurs instructions comme AND et LSR pour isoler et aligner un octet,
UXTB permet de le faire en une seule instruction, réduisant le code et améliorant les performances, notamment dans les boucles de traitement de données.
- Compatible avec l'exécution conditionnelle {cond} : L'instruction peut être suffixée par un code de condition ({cond}), ce qui signifie qu'elle ne
s'exécutera que si certaines conditions sur les drapeaux sont remplies. Cela permet d'optimiser le flux sans branchements explicites.
- Instruction disponible sur ARMv6 et versions supérieures : UXTB fait partie du jeu d'instructions étendues introduites à partir de ARMv6. Elle est donc
disponible sur de nombreux microcontrôleurs modernes, mais pas forcément sur des versions ARM plus anciennes comme ARM7TDMI.
- Peut servir à préparer des opérations arithmétiques : L'extension réalisée par UXTB est souvent utilisée avant des opérations arithmétiques ou logiques,
notamment pour éviter des effets de signe ou des débordements. Par exemple, additionner deux octets étendus sans risquer d'interprétation négative.
Dernière mise à jour : Dimanche, le 12 novembre 2017