SXTAH |
Étendre des demi-mots et addition signé |
| ARM |
Syntaxe
|
SXTAH{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 le signe du demi-mot étendue avec une addition, et d'étendre les valeurs 16 bits en 32 bits.
Remarques
- Extension signée sur 16 bits : L'instruction SXTAH étend le demi-mot (16 bits) signé provenant du registre Rm vers une valeur signée 32 bits, ce qui permet
de préserver correctement le signe lors d'une promotion de taille. Cette extension est cruciale pour les opérations arithmétiques précises sur des données compressées.
- Addition avec un registre de base : Après l'extension du demi-mot, SXTAH effectue une addition avec la valeur contenue dans Rn, ce qui est pratique dans
des cas où l'on veut combiner une valeur étendue à une base, comme dans les algorithmes de filtrage, les sommes pondérées ou les accumulations.
- Utilisation de la rotation pour sélectionner le demi-mot : La présence du paramètre rotation permet de repositionner dynamiquement la portion de 16 bits à
étendre au sein du registre Rm. Cela évite d'avoir à préparer Rm avec des instructions séparées, ce qui réduit le nombre d'instructions et améliore la performance.
- Alternative compacte pour la gestion des données signées : SXTAH évite l'usage combiné d'un LSL, MOV, ORR ou autre manipulation manuelle pour récupérer une
valeur 16 bits signée. Elle fournit une solution compacte, rapide et propre pour étendre et additionner une valeur sur 2 octets dans des structures ou des flux de
données.
- Très utilisée dans les traitements DSP légers : Cette instruction est typiquement utilisée dans les domaines comme le traitement du signal, l'audio ou
l'image, où les données sont souvent entreposées en 16 bits signés. SXTAH permet de manipuler efficacement ces données en les convertissant en 32 bits tout en les combinant
à une base.
- Instruction conditionnelle selon les drapeaux : Comme beaucoup d'instructions ARM, SXTAH accepte un suffixe conditionnel {cond}, ce qui permet d'éviter des
branches conditionnelles coûteuses. Elle peut ainsi s'exécuter uniquement si certaines conditions sur les registres sont remplies, optimisant les flux d'exécution.
- Ne pas confondre avec SXTAH16 ou SXTAB : Il ne faut pas confondre SXTAH, qui travaille sur un seul demi-mot, avec SXTAB (qui étend un octet) ou SXTAB16
(traitant deux octets séparés). SXTAH est dédiée aux cas où une valeur 16 bits signée doit être utilisée dans un calcul 32 bits.
- Idéal pour accéder à des structures mémoire compactes : Dans les cas de structures de données contenant des champs 16 bits signés (comme des matrices, des
vecteurs ou des entêtes de protocoles), SXTAH permet de charger proprement la donnée, de la convertir et de l'ajouter en une seule instruction, ce qui allège fortement le
code assembleur.
Dernière mise à jour : Dimanche, le 12 novembre 2017