| Assembleur 370 |
BASR |
| Branch and Save Register |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer un registre où sera sauvegardée l'adresse de retour. |
| R2 |
Ce paramètre permet d'indiquer un registre contenant l'adresse de destination (la routine). |
Description
Cette instruction permet d'effectuer un saut à l'adresse d'un registre et place les informations de liaisons dans un autre registre.
Remarques
- L'instruction BASR (Branch and Save Register) permet de sauter vers une adresse contenue dans un registre, tout en enregistrant l'adresse de retour dans un autre.
Elle combine efficacité et souplesse pour appeler des routines dont l'adresse est calculée. C'est une forme purement registre à registre, sans adressage mémoire direct.
- Le registre R1 sert à sauvegarder l'adresse de retour, c'est-à-dire l'adresse de l'instruction suivante. Cette valeur pourra ensuite être utilisée pour revenir au
point d'appel, via une instruction BR R1. Il est important de ne pas écraser R1 avant le retour.
- Le registre R2 contient l'adresse de destination, vers laquelle l'exécution va se poursuivre. Il doit avoir été préalablement chargé avec une adresse valide,
généralement via une instruction L ou LA. Une erreur sur R2 entraîne un saut vers une zone potentiellement invalide.
- BASR est particulièrement utile pour appeler des sous-programmes dont l'adresse n'est connue qu'à l'exécution. Cela permet par exemple des appels à partir d'une
table d'adresses ou d'un vecteur dynamique. Elle offre une grande souplesse dans les architectures modulaires.
- L'usage de R1 et R2 doit suivre une convention stricte pour éviter toute confusion. Par tradition, R14 est souvent utilisé comme registre de retour et R15 comme
registre de saut. Ce schéma facilite la compréhension et le débogage des programmes en assembleur.
- BASR ne modifie ni la mémoire ni les autres registres que ceux explicitement indiqués. Cela en fait une instruction légère, rapide et idéale pour les appels
fréquents. Elle est adaptée aux systèmes où la performance est cruciale.
- L'instruction est également utile pour initialiser une adresse de base dans des segments de code. En mettant R2 à zéro, BASR R1,0 permet de capturer l'adresse
courante dans R1. C'est une astuce classique utilisée dans les routines d'initialisation.
- BASR est une variante plus souple de BAS, car elle se base uniquement sur les registres. Elle est bien adaptée aux environnements modernes et aux appels indirects.
Maîtriser BASR est essentiel pour écrire du code modulaire, compact et efficace sur IBM 370.
Dernière mise à jour : Mardi, le 22 août 2017