HLASM - BALR = Branch And Link Register

De opcode van de BALR instructie is X'05'.

Gebruik

  1. 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.
  2. 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.
  3. Verkrijgen van adresseerbaarheid.

Argumenten

  1. Register om het terugkeer-adres te ontvangen.
  2. Register met het routine-adres.

Functie

  1. 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.
  2. Zij springt naar het adres in het tweede register.
  3. De conditie code wijzigt niet.

Uitzonderingen

  1. Als het tweede argument register 0 is, dan springt de processor niet; alleen het terugkeer-adres wordt in het eerste register geplaatst.

Gerelateerde instructies

  1. BAL springt naar een routine die direct addresseerbaar is in base-displacement vorm.
  2. BCR is de aanbevolen terugkeer-instructie.
  3. BASR geniet de voorkeur boven BALR.
  4. BASSM springt naar een routine die wellicht in een andere Amode dient aageroepen te worden.

Hardware

  1. Alle hardware ondersteunt de BALR instructie.

Opmerkingen

  1. De Amode in het PSW bepaalt hoeveel bits er worden gebruikt voor het terugkeer-adres en het routine adres.
  2. Het gebruik van BALR wordt afgeraden. Gebruik liever BASR.
  3. 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.
Rennende Tyrannosaurus Rex 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.