Assembleur 370 |
SRDA |
Shift Right Double |
Syntaxe
Paramètres
Nom |
Description |
R1 |
Ce paramètre permet d'indiquer un registre pair (R0, R2, R4, ..., R14). Contient la moitié haute du double mot (64 bits). Le registre R1+1 contient la moitié basse. Le résultat du décalage est stocké dans ces deux registres. Attention : R1 doit être un registre pair. L'instruction fonctionne sur un double mot (64 bits), donc R1 doit être suivi par le registre R1+1 (par exemple, R2 et R3 pour un double mot). |
D2(B2) |
Ce paramètre permet d'indiquer l'adresse mémoire contenant la valeur du nombre de bits (de 0 à 63) à décaler. L'adresse effective est calculée ainsi : Adresse effective = D2 + contenu de B2. Le contenu à cette adresse est un entier non signé, représentant le nombre de bits de décalage. |
Description
Cette instruction permet d'effectuer un décalage de bits vers la droite, 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 SRDA effectue un décalage arithmétique à droite sur un double mot (64 bits). Elle conserve le bit de signe (bit 0) pendant le décalage, ce qui la rend
adaptée aux valeurs signées. Ce comportement assure une division cohérente avec le signe.
- Le registre R1 doit impérativement être pair, car il travaille en tandem avec R1+1. Ensemble, ces deux registres représentent l'opérande de 64 bits à décaler.
Utiliser un registre impair provoque une erreur d'exécution.
- Le décalage peut aller de 0 à 63 bits, ce qui permet une grande flexibilité. La valeur de décalage est lue en mémoire à une adresse calculée dynamiquement.
Cela autorise un décalage déterminé à l'exécution plutôt qu'en dur.
- Le bit de signe est répliqué pendant le décalage, ce qui évite une inversion de signe indésirable. Cela distingue SRDA des instructions de décalage logique comme
SRDL. Elle est donc utile pour des calculs arithmétiques signés, comme des divisions.
- L'opérande source et le résultat se trouvent dans les mêmes registres (R1:R1+1). Cette structure évite des lectures/écritures en mémoire et permet un traitement plus
rapide. Le registre mémoire indiquant le décalage reste inchangé.
- L'instruction permet de manipuler des entiers très grands (64 bits), utiles dans des contextes précis. Elle est particulièrement adaptée pour des opérations sur des
nombres longs ou des structures binaires complexes. Cela en fait un outil performant dans les routines arithmétiques avancées.
- Une mauvaise gestion de la valeur de décalage (ex. : dépassement de 63) peut corrompre le contenu du registre. Il est donc crucial de valider la donnée mémoire
contenant la quantité de décalage. Un contrôle strict garantit un comportement prévisible.
- SRDA est souvent utilisé pour simuler une division entière signée par des puissances de deux. Le résultat reste cohérent avec les règles d'arithmétique binaire signée.
Cela réduit le besoin d'opérations plus complexes comme D (Divide).
Dernière mise à jour : Mardi, le 22 août 2017