| Assembleur 370 |
SRA |
| Shift Right Single |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer un registre de destination. Contient l'opérande à décaler (un mot de 32 bits). Reçoit le résultat du décalage à droite. |
| D2(B2) |
Ce paramètre permet d'indiquer un adresse mémoire contenant la valeur nombre de bits à décaler (de 0 à 31). La valeur de décalage est stockée à l'adresse calculée comme : Adresse effective = D2 + contenu de B2. Cette valeur est lue et utilisée pour déterminer le nombre de positions à décaler. |
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 32 bits. Seul les bits 1 à 31 sont déplacés, puis le bit 0 est utilisé comme signe (+ ou -).
Remarques
- L'instruction SRA réalise un décalage arithmétique à droite sur un registre de 32 bits. Cela signifie que le bit de signe (bit 0) est préservé pendant le décalage.
Elle est adaptée aux entiers signés.
- Le registre R1 contient l'opérande à décaler et reçoit le résultat. Les bits sont décalés vers la droite, et les bits de poids fort sont complétés par la valeur du
bit de signe. Ceci permet de maintenir la cohérence du signe du nombre.
- Le paramètre D2(B2) est utilisé pour calculer une adresse mémoire contenant la valeur de décalage. La donnée à cette adresse doit être un entier non signé entre 0 et 31.
Cela permet un décalage dynamique, selon des données en mémoire.
- L'opération est effectuée sur un mot complet de 32 bits. Les bits déplacés en dehors de la zone ne sont pas récupérés (ils sont perdus). Cela peut entraîner une perte
d'information, utile notamment pour diviser des entiers.
- SRA est souvent utilisée pour diviser un entier signé par une puissance de deux. Par exemple, un décalage de 1 bit revient à diviser par 2, tout en conservant le signe.
Elle est donc précieuse pour les optimisations arithmétiques.
- Cette instruction ne modifie que R1 ; la mémoire servant à obtenir le décalage reste inchangée. Cela permet de réutiliser la même valeur de décalage pour plusieurs
registres si nécessaire. Elle favorise la modularité dans les séquences de traitement.
- Le bon usage de SRA nécessite de vérifier que le registre utilisé contient bien un entier signé. Sinon, le comportement du décalage peut être incohérent avec les
attentes du programmeur. Une mauvaise gestion du bit de signe peut provoquer des erreurs logiques.
- À ne pas confondre avec SRL (Shift Right Logical), ne conservant pas le bit de signe. SRA est spécifique aux valeurs arithmétiques signées, alors que SRL convient
aux valeurs logiques. Le choix entre les deux dépend donc du type de donnée manipulé.
Dernière mise à jour : Mardi, le 22 août 2017