| Assembleur 370 |
BALR |
| Branch and Link Register |
Syntaxe
Paramètres
| Nom |
Description |
| R1 |
Ce paramètre permet d'indiquer un registre où sera entreposée l'adresse de retour (instruction suivante). |
| R2 |
Ce paramètre permet d'indiquer un registre contenant l'adresse de branchement (destination). |
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 BALR (Branch and Link Register) effectue un saut vers une adresse contenue dans un registre. Elle place simultanément l'adresse de retour dans un autre
registre. C'est un outil fondamental pour les appels de sous-programmes avec adresses dynamiques.
- Le registre R1 reçoit l'adresse de l'instruction suivante, permettant ainsi un retour après le saut. C'est le mécanisme de "link", essentiel dans la gestion des
sous-routines. Il doit être préservé si sa valeur doit être réutilisée plus tard.
- Le registre R2 contient l'adresse de destination du saut, c'est-à-dire le nouveau point d'exécution. Il peut avoir été chargé auparavant avec une adresse constante
ou calculée. Cela permet une flexibilité maximale dans le contrôle du flux du programme.
- BALR est souvent utilisé pour appeler des sous-programmes dont l'adresse n'est connue qu'à l'exécution. Il permet de sauter vers des adresses calculées ou extraites
d'une table. Cette capacité rend l'instruction très utile dans les programmes dynamiques ou modulaires.
- Si R2 = 0, alors l'instruction ne fait pas de saut, elle ne fait qu'enregistrer l'adresse de retour dans R1. Ce cas particulier est utilisé pour déterminer l'adresse
courante du programme, une astuce classique. C'est une technique utile pour des opérations d'initialisation ou de débogage.
- BALR est souvent associé à BR (Branch Register) pour revenir à l'appelant. Typiquement, on saute avec BALR R14, R15 et on revient avec BR R14. Ce schéma est standard
dans les conventions d'appel en assembleur 370.
- L'instruction BALR n'utilise pas d'adressage mémoire direct, tout est fait via les registres. Cela améliore la rapidité d'exécution et la clarté dans la gestion des
appels. Elle est donc bien adaptée aux architectures performantes et bien optimisées.
- Une bonne utilisation de BALR suppose une gestion rigoureuse des registres d'appel (souvent R14 et R15). Il est essentiel de sauvegarder les registres modifiés pour
éviter des pertes de contexte. BALR est une instruction puissante, mais elle demande une discipline stricte dans l'écriture du code.
Dernière mise à jour : Mardi, le 22 août 2017