Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Relativierung der Adressen

Die wichtigste Aufgabe des dynamischen Bindeladers DBL besteht darin, aus den Bindemodulen (OMs) und LLMs der Eingabe eine ablauffähige Einheit zu bilden. Er muss also die Adressen in den einzelnen Programmabschnitten dem Gesamtprogramm anpassen (Relativierung) und außerdem für noch unbefriedigte Externverweise und V-Konstanten die passenden Einsprungadressen suchen.

Ein Bindemodul (OM) und ein LLM enthalten Relativierungssätze, in denen festgelegt ist, wie sich die Programmadressen relativ zueinander verhalten. Mit ihrer Hilfe vergibt der DBL die endgültigen Adressen für das gesamte Programm.

Relativierung der Adressen bei Bindemodulen (OMs)

Bei Programmabschnitten (CSECT) hängt die Anfangsadresse von den beiden Attributen READ-ONLY und PAGE ab, die vom Sprachübersetzer eingetragen wurden:

READ-ONLY bedeutet, dass der Abschnitt während des Programmlaufs nur gelesen, d.h. nicht überschrieben werden darf. Der DBL muss den Abschnitt also in eine neue Seite laden, falls die aktuelle Seite nicht auch das Attribut READ-ONLY hat.

PAGE vereinbart, dass der Programmabschnitt an den Anfang einer neuen Seite zu laden ist, d.h. an eine Adresse, die ein Vielfaches von 4096 Byte (X’1000’) ist.

Beispiele für die Verarbeitung von Programmabschnitten durch den DBL


  1. X CSECT PAGE,READ

    .....................

    Y   CSECT   READ

    .....................

    Programmabschnitt X soll auf Seitengrenze ausgerichtet und nur lesbar sein. Der nachfolgende Abschnitt Y benötigt keine Ausrichtung auf Seitengrenze, ist ebenfalls nur lesbar. Der DBL lädt Y deshalb in dieselbe Seite wie X, und zwar an die nächste Doppelwortgrenze.


  2. ABC CSECT READ

    ..................

    XYZ CSECT

    ..................

    Den Programmabschnitt ABC richtet der DBL, falls er der erste Programmabschnitt des Bindemoduls ist, automatisch auf Seitengrenze aus. Er lädt ihn in eine Seite, die nur gelesen werden darf. Abschnitt XYZ wird von DBL auf die Seitengrenze einer neuen Seite ausgerichtet, weil Schreib- und Lesezugriff auf die CSECT erlaubt ist.

Relativierung der Adressen bei LLMs

Die Anfangsadresse ist von folgenden Eigenschaften des LLM abhängig:

  1. LLM mit CSECT-Attributen PAGE und READ-ONLY

    Wurden die Attribute PAGE und READ-ONLY vom BINDER übergeben, dann gilt:

    • PAGE vereinbart, dass die CSECT an den Anfang einer neuen Seite zu laden ist, d.h. an einer Adresse, die ein Vielfaches von 4096 Byte (X’1000’) ist.

    • READ-ONLY bedeutet, dass die CSECT während des Programmlaufs nur gelesen, d.h. nicht überschrieben werden darf. Der DBL muss die CSECT also in eine neue Seite laden, falls die aktuelle Seite nicht auch das Attribut READ-ONLY hat.Dies gilt für LLMs mit folgender physischer Struktur (siehe Handbuch BINDER“ [1]):

      • Einzel-Slices

      • benutzerdefinierte Slices

      • nach Attributen gebildete Slices, bei denen das Attribut READ-ONLY nicht zur Bildung von Slices verwendet wurde.

  2. LLM ohne Relativierungsinformation (LRLD)

    Wenn der LLM ohne Relativierungsinformation gespeichert wurde (siehe BINDER-Anweisung SAVE-LLM, Operand RELOCATION-DATA=*NO), bestimmt der DBL die Anfangsadresse, die mit dem Operanden LOAD-ADDRESS in der BINDER-Anweisung SAVE-LLM festgelegt wurde. Ist dies nicht möglich, wird der Ladevorgang abgebrochen.

  3. LLM mit Relativierungsinformation (LRLD)

    Wenn der LLM mit Relativierungsinformation gespeichert wurde (siehe BINDER Anweisung SAVE-LLM, Operand RELOCATION-DATA=*YES), bestimmt der DBL die Anfangsadresse wie folgt:

    • Er versucht zuerst, die mit dem Operanden LOAD-ADDRESS in der BINDER-Anweisung SAVE-LLM festgelegte Anfangsadresse zuzuordnen. Ist dies möglich, wird die Relativierung auf die unbefriedigten Externverweise und auf die Referenzen zu COMMON-Bereichen beschränkt. (Die LLM-interne Relativierung wurde schon während des BINDER-Laufs durchgeführt.)

    • Kann die mit dem Operanden LOAD-ADDRESS festgelegte Adresse nicht als Anfangsadresse zugeordnet werden, bestimmt der DBL eine beliebige Adresse und führt die vollständige Relativierung durch.