SXTAB16 |
Étendre zéro de 2 octets signé |
| ARM |
Syntaxe
|
SXTAB16{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 de 2 octets avec une addition, et d'étendre 2 valeurs 8 bits à 16 bits.
Remarques
- Extension signée indépendante sur deux octets : L'instruction SXTAB16 traite deux octets signés indépendants dans un registre source (Rm), les étend
séparément à 16 bits avec préservation du signe, puis les additionne respectivement aux moitiés hautes et basses de Rn. Cela permet de traiter efficacement deux valeurs
8 bits simultanément.
- Rotation pour sélectionner la paire d'octets : L'option de rotation permet de repositionner dynamiquement les octets à traiter dans Rm, ce qui évite d'avoir
à utiliser des instructions supplémentaires de décalage ou d'extraction. Cela optimise à la fois le code et les performances dans les traitements vectoriels ou
multimédia.
- Adaptée aux architectures SIMD-like sans unité NEON : SXTAB16 est une solution idéale pour du traitement parallèle léger sur des plateformes ARM sans
extension NEON, car elle permet de simuler une opération SIMD (traitement de plusieurs données à la fois) sur deux octets indépendants dans un seul registre.
- Ne pas confondre avec SXTAB : Contrairement à SXTAB, qui travaille sur un seul octet, SXTAB16 opère sur deux octets en parallèle. Cela la rend plus
adaptée pour certaines applications audio, image ou cryptographie où les paires de valeurs signées doivent être manipulées ensemble.
- Souvent utilisée pour le traitement d'échantillons : L'instruction est utile pour traiter des échantillons 8 bits signés entreposés par paires (par exemple,
dans le traitement audio stéréo ou image RGB). Elle permet de convertir rapidement ces échantillons en format 16 bits pour traitement sans perte de signe.
- Le registre Rd contient deux résultats 16 bits : Le résultat de SXTAB16 est stocké dans Rd, où la partie basse et la partie haute représentent les
résultats de l'addition des deux moitiés étendues séparément. Cela permet de continuer des traitements parallèles en les extrayant individuellement si besoin.
- Instruction conditionnelle grâce au suffixe {cond} : Comme beaucoup d'instructions ARM, SXTAB16 peut être conditionnelle, en fonction du contexte de
l'exécution (flags du processeur). Cela permet de remplacer des branches conditionnelles, optimisant les performances dans des algorithmes à logique complexe.
- Attention aux interprétations erronées sur le type d'extension : Malgré le nom SXTAB16, il ne s'agit pas d'une extension sur 16 bits, mais bien de deux
extensions indépendantes de 8 bits chacune. Ce nom peut prêter à confusion ; la "16" fait référence au format de sortie, pas à la taille des données sources.
Dernière mise à jour : Dimanche, le 12 novembre 2017