SXTB |
Étendre un zéro d'octet signé |
| ARM |
Syntaxe
|
SXTB{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 le signe d'un octet et d'étendre une valeur de 8 bits à 32 bits.
Remarques
- Extension du signe sur 8 bits : L'instruction SXTB prend un octet signé (8 bits) et l'étend à un entier signé de 32 bits tout en préservant le bit de
signe. Cela permet de travailler correctement avec des données signées compactes, sans introduire d'erreur liée à la taille ou au signe.
- Rotation utile pour sélectionner l'octet : Grâce au paramètre rotation, SXTB peut faire une rotation de Rm pour repositionner l'octet d'intérêt. Cela
permet de sélectionner un octet non aligné dans un registre 32 bits sans recourir à des instructions supplémentaires comme LSR ou AND.
- Utile dans la lecture de structures compactes : Quand des données sont compactées en octets (par exemple dans un tableau de structures ou dans des
paquets réseau), SXTB permet de lire et convertir rapidement ces données pour les intégrer dans des traitements 32 bits.
- Optimisation de code pour architectures ARM : SXTB est une alternative très efficace à une combinaison manuelle de masquage (AND) et de tests conditionnels
pour l'extension de signe. Elle permet de réduire le nombre d'instructions nécessaires et donc d'optimiser la performance et la taille du code.
- Instruction conditionnelle avec suffixe {cond} : Comme d'autres instructions ARM, SXTB peut être rendue conditionnelle à l'aide du suffixe {cond}. Cela
permet de l'exécuter uniquement si certains flags dans le registre d'état sont actifs, évitant des branchements conditionnels explicites.
- Attention au nom de l'instruction : "sign" et non "zero" : La description de l'instruction parle d'extension de "zéro", mais c'est une erreur : SXTB étend
le signe d'un octet, ce qui signifie que le bit 7 est répliqué dans les bits 8 à 31. Pour une extension de zéro (non signée), il faudrait utiliser UXTB.
- Permet de cibler des champs particuliers dans un registre : Lorsqu'un registre contient plusieurs octets de données (comme dans des techniques SIMD ou
d'encodage compact), SXTB permet d'isoler un champ de 8 bits, de le repositionner avec une rotation, puis de l'étendre proprement pour traitement.
- Parfait pour des calculs sur des entiers signés de petite taille : SXTB est souvent utilisé pour manipuler des valeurs signées issues de capteurs, fichiers
audio ou protocoles réseau, où les données sont stockées sur 1 octet. Elle permet une manipulation cohérente dans des environnements 32 bits sans risque d'interprétation
erronée.
Dernière mise à jour : Dimanche, le 12 novembre 2017