| Assembleur 370 |
SLA |
| Shift Left Single |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer un registre général (R0 à R15). Contient l'opérande à décaler (un entier signé de 32 bits). Reçoit le résultat après le décalage. |
| D2(B2) |
Ce paramètre permet d'indiquer un entier non signé indiquant de combien de bits il faut décaler. L'adresse effective est calculée ainsi : D2 + contenu de B2. Le contenu mémoire à cette adresse doit contenir le nombre de positions de décalage (0 à 31 maximum). |
Description
Cette instruction permet d'effectuer un décalage de bits vers la gauche, du nombre de position spécifié par l'opérande, d'un registre de 32 bits. Seul les bits 1 à 31 sont déplacés, puis le bit 0 est utilisé comme signe (+ ou -).
Remarques
- L'instruction SLA effectue un décalage à gauche sur un entier signé de 32 bits entreposé dans un registre. Elle déplace les bits vers les positions les plus
significatives, multipliant la valeur par une puissance de deux. Ce décalage respecte le bit de signe, ce qui peut modifier radicalement la valeur si on dépasse certaines
limites.
- Le registre R1 joue un double rôle : il contient l'opérande à décaler et reçoit le résultat du décalage. Ce registre est donc modifié par l'opération. Toute donnée
initiale qu'on voudrait conserver doit être sauvegardée ailleurs au préalable.
- Le second paramètre, D2(B2), spécifie une adresse mémoire contenant le nombre de positions de décalage. Ce contenu doit être compris entre 0 et 31; une valeur hors
de cette plage produit un comportement indéfini. Il est donc essentiel de valider cette valeur avant utilisation.
- Le bit 0 du registre, après l'opération, est réservé au signe du résultat (positif ou négatif). Cela signifie qu'un décalage à gauche peut facilement transformer un
entier positif en un entier négatif. L'usage de SLA doit donc être prudent pour éviter des erreurs de signe.
- SLA est utile dans les opérations arithmétiques rapides, notamment pour simuler des multiplications par 2n. Toutefois, contrairement à une multiplication
simple, le bit de signe peut être affecté, ce qui en fait une opération plus risquée. Le programmeur doit vérifier si le changement de signe est acceptable dans le
contexte.
- Les indicateurs de condition (CC) sont mis à jour en fonction du résultat. Ils permettent de détecter si le résultat est nul, négatif ou s'il y a eu perte de bits.
Cela rend l'instruction compatible avec des structures de contrôle conditionnel (branchements, tests...).
- En cas de perte de bits déplacés hors du registre (bits trop significatifs), l'état du programme peut devenir incohérent. C'est pourquoi SLA n'est pas adapté aux
valeurs critiques ou aux traitements financiers. Il vaut mieux préférer des opérations arithmétiques classiques quand la précision est cruciale.
- L'instruction SLA fait partie des opérations dites de manipulation de bits, très utiles en bas niveau. Elle est souvent utilisée dans les algorithmes de cryptographie,
compression ou encodage. Sa compréhension est indispensable pour les programmeurs système ou embarqué.
Dernière mise à jour : Mardi, le 22 août 2017