| Assembleur 370 |
SLDA |
| Shift Left Double |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer un registre pair (R0, R2, ..., R14). Contient la partie haute de l'opérande 64 bits. R1 et R1+1 forment ensemble un double mot (64 bits). Le résultat du décalage est replacé dans ces deux registres. Si R1 est impair, c'est une erreur - cette instruction exige un registre pair, car elle utilise aussi R1+1. |
| D2(B2) |
Ce paramètre permet d'indiquer l'adresse mémoire où est stocké le nombre de bits de décalage à effectuer (de 0 à 63). L'adresse effective est calculée comme : D2 + contenu de B2. La valeur lue à cette adresse est un entier non signé (byte ou halfword selon l'implémentation). |
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 64 bits. Seul les bits 1 à 63 sont déplacés, puis le bit 0 est utilisé comme signe (+ ou -).
Remarques
- L'instruction SLDA effectue un décalage logique à gauche sur 64 bits, en combinant deux registres successifs. Elle est conçue pour les cas où une précision sur 32 bits
ne suffit pas, comme en arithmétique longue. Elle utilise un registre pair R1 et son successeur R1+1.
- L'opérande doit commencer dans un registre pair (R0, R2, etc.), sinon l'instruction échoue. Cela vient du fait que SLDA traite une donnée de double mot (64 bits), répartie
sur deux registres consécutifs. Cette contrainte est typique des instructions manipulant des données longues.
- Le registre R1 contient la partie haute, et R1+1 la partie basse du double mot à décaler. Après l'opération, ces deux registres sont mis à jour ensemble avec le résultat.
Cela assure que l'ensemble de la donnée reste cohérent après le décalage.
- Le paramètre D2(B2) donne l'adresse mémoire contenant le nombre de bits à décaler (entre 0 et 63). Ce nombre doit être entreposé en mémoire sous forme d'un entier non
signé, à cette adresse calculée dynamiquement. Une mauvaise valeur ou une adresse invalide peut entraîner des erreurs d'exécution.
- Le bit 0 du résultat est réservé au bit de signe, puisque le registre contient une valeur signée. Un décalage mal contrôlé peut donc provoquer un changement de signe
non désiré. Ce point rend cette instruction délicate dans les traitements numériques sensibles.
- Le décalage vers la gauche est équivalent à une multiplication par 2?, mais avec gestion sur 64 bits. Cela permet d'effectuer des opérations arithmétiques rapides sur
des entiers longs. Cependant, il faut s'assurer que la perte de bits significatifs ne nuit pas à la validité des résultats.
- Comme pour d'autres instructions logiques, les indicateurs de condition (CC) sont mis à jour après l'exécution. Ils indiquent notamment si le résultat est nul, négatif
ou s'il y a eu perte de bits. Cela permet d'enchaîner des tests logiques sans opération supplémentaire.
- SLDA est utilisée dans des contextes de calculs haute précision, par exemple pour manipuler de grandes valeurs entières. On la retrouve dans les algorithmes mathématiques,
les systèmes de chiffrement, ou la gestion d'horloges longues. Elle fait partie des instructions avancées du 370, maîtrisées surtout par les développeurs systèmes.
Dernière mise à jour : Mardi, le 22 août 2017