HLASM - BALR = Branch And Link Register
De opcode van de BALR instructie is X'05'.
Gebruik
- Aanroep van een subroutine in een andere CSECT - op voorwaarde
dat van die routine bekend is dat zij aangeroepen kan worden in dezelfde Amode
als het aanroepende programma. In dit geval worden meestal R14 en R15 gebruikt
als repectievelijk het terugkeer-adres en het routine-adres.
- Aanroep van een subroutine in dezelfde CSECT - op voorwaarde
dat van die routine bekend is dat zij aangeroepen kan worden in dezelfde Amode
als het aanroepende programma, hetgeen normaal gesproken het geval zal zijn.
Het is niet ongebruikelijk om in dit geval andere (minder vluchtige)
registers te gebruiken dan R14 en R15.
- Verkrijgen van adresseerbaarheid.
Argumenten
- Register om het terugkeer-adres te ontvangen.
- Register met het routine-adres.
Functie
- De processor plaatst het adres van de byte die volgt op de BALR
instructie (dit is zowel het eerstvolgende sequentiële instructie
adres als het verwachtte terugkeer-adres) in het eerste register.
- Zij springt naar het adres in het tweede register.
- De conditie code wijzigt niet.
Uitzonderingen
- Als het tweede argument register 0 is, dan springt de processor niet;
alleen het terugkeer-adres wordt in het eerste register geplaatst.
Gerelateerde instructies
- BAL springt naar een routine die direct
addresseerbaar is in base-displacement vorm.
- BCR is de aanbevolen terugkeer-instructie.
- BASR geniet de voorkeur boven BALR.
- BASSM springt naar een routine die wellicht in
een andere Amode dient aageroepen te worden.
Hardware
- Alle hardware ondersteunt de BALR instructie.
Opmerkingen
- De Amode in het PSW bepaalt hoeveel bits er worden gebruikt voor het
terugkeer-adres en het routine adres.
- Het gebruik van BALR wordt afgeraden. Gebruik liever
BASR.
- In Amode 24 bevat het gegenereerde terugkeer-adres 8 high-order bits
met extra informatie uit het PSW. Dit wordt meestal beschouwd als ballast.
Het high-order bit van het 32-bits register kan 1 worden, hetgeen problemen
kan veroorzaken indien het aangeroepen programma terugkeert met een
BSM in plaats van een van de
BCR instructies (met name een BR
instructie).
Voorbeelden
YREGS * Define register names
ENTRY BALR R15,R0 * Obtain routine address
USEBASE USING USEBASE,R15 * Make code addressable
...
L R15,=V(SUBPROG) * Load address of subroutine
BALR R14,R15 * Call subprogram
...
Naar het Opcodes overzicht.
Naar de Nederlandse Homepage voor Hlasm.com.
Naat de Algemene Homepage voor Bixoft en Hlasm.com.
Deze site is aangesloten bij WebRing.
Bekijkt u gerust de
lijst van mainframe-gerelateerde sites.
|
|
Dino's zijn niet dood. Ze zijn gezond en wel en leven in computer-centra overal
om ons heen. Zij spreken in tongen en doen wonderbare magie met computers.
Pas op voor de dino! En voor het geval u zit te wachten op het definitieve
einde van deze dino's: onthoud dat dino's de wereld 155 miljoen jaren hebben
geregeerd!
|
Dino's en andere anachronismen
[ Aanmelden
| Ring Overzicht
| Willekeurig
|
<< Vorige
|
Volgende >>
]
|
Hieronder vindt u het logo van onze
sponsor
en logos van web-standaarden waaraan deze web-pagina voldoet.