Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

SEGLD - Segmente laden

&pagelevel(3)&pagelevel

Allgemeines

Anwendungsgebiet:

Binden und Laden; siehe "Binden und Laden"

Makrotyp:

O-Typ;

siehe "O-Typ-Makroaufrufe"


Makrobeschreibung

Der Makroaufruf SEGLD ermöglicht das automatische Laden eines Segmentes, auch wenn es schon im Speicher steht. Weitere Segmente innerhalb desselben Astes der Überlagerungsstruktur werden automatisch nachgeladen.
Die Fortsetzungsadresse kann angegeben werden.

Makroaufrufformat und Operandenbeschreibung

SEGLD

symbol1[,symbol2]

symbol1
symbolische Adresse innerhalb des zu ladenden Segmentes. Eine 4 Byte lange V-Konstante wird für dieses Symbol erzeugt.

symbol2
symbolische Adresse im aufrufenden oder einem anderen Modul, bei der nach Abschluss des Ladevorganges fortgesetzt werden soll (keine V-Konstante). Wird dieser Operand nicht angegeben, so wird mit dem auf SEGLD folgenden Befehl fortgesetzt.

Funktionsweise

Mit dem Makro SEGLD (und auch mit dem Makro CALL) wird das automatische Laden von Segmenten realisiert (das nicht automatische Laden wird mit dem Makro LPOV durchgeführt).


Durch eine Anweisung im Makro SEGLD wird der Assembler veranlasst, aus der angegebenen symbolischen Adresse eine V-Konstante zu erzeugen, durch die das zu ladende Segment gekennzeichnet ist. Auf Grund dieser V-Konstanten im Makro SEGLD (und des Operanden CONTROL=YES in der Steueranweisung PROGRAM) erzeugt der Binder ein für automatisches Laden notwendiges Überlagerungsmodul, das die V-Konstante mit einer Adresse befriedigt. Zur Ausführungszeit von SEGLD wird die Steuerung dem Überlagerungssteuermodul übertragen, das das Segment, das die angegebene symbolische Adresse enthält, und alle weiteren Segmente innerhalb des betreffenden Astes der Überlagerungsstruktur in den Speicher lädt. Dies geschieht unabhängig davon, ob die Segmente bereits im Speicher stehen oder nicht.

Nach Abschluss des Ladevorgangs wird - falls der Operand „symbol2“ fehlt - mit dem auf SEGLD folgenden Befehl fortgesetzt. Die als Operand „symbol2“ mögliche Adresse kann innerhalb des aufrufenden Moduls liegen oder eine externe Referenz sein. Im zweiten Fall muss der Benutzer die entsprechenden ENTRY- und EXTRN-Anweisungen geben und überdies sicherstellen, dass das Modul, das „symbol2“ enthält, nach Abschluss des Ladevorgangs im Speicher ist (siehe Handbuch „Dienstprogramme“ [27]).

Hinweise zum Makroaufruf

  • Beim Entwurf der Überlagerungsstruktur eines Programms, in dem mit automatischem Laden vom Segmenten gearbeitet wird, sollte der zusätzliche Speicherbedarf für den Überlagerungssteuermodul, für ENTAB und für SEGTAB berücksichtigt werden (siehe Handbuch „Dienstprogramme“ [27]).

  • Der Makroaufruf SEGLD muss in einem Programmbereich liegen, der durch eine USING-Anweisung abgedeckt wird. Da das Register R15 von dem Makro SEGLD zum Laden der Segmente verwendet wird, darf es nicht als Basisregister für den Programmteil dienen, in dem der Makroaufruf SEGLD liegt.

Rückinformation und Fehleranzeigen

Wenn Fehler während des Ladens eines Überlagerungssegments auftreten, setzt der Ablaufteil das Programm mit dem SEGLD folgenden Befehl fort. Tritt kein Fehler auf, so gilt die im Makroaufruf angegebene Fortsetzungsadresse.

R15:

+---------------+
|   |   |   |   |
| | | | | | |a|a|
+---------------+

Über die Ausführung des Makros SEGLD wird im rechtsbündigen Byte des Registers R15. ein Returncode übergeben

X'aa'

Erläuterung

X'00'

Das Segment wurde geladen.

X'04'

Falscher Nur-Lese-Modifikationssatz.

X'08'

Falscher Satzcode im Text/Modifikationsblock oder es kommt vor dem 1. Textsatz ein
Modifikationssatz.

X'0C'

Es sind zu viele Nur-Lese-Modifikationssätze vorhanden oder Segmentname kann in keinem
der Indexsätze für Lademoduln (= Segment) gefunden werden.

X'10'

Es gibt keinen Indexsatz für Lademoduln mit dem Segmentnamen %ROOT.

X'14'

Es ist nicht genügend Speicherplatz vorhanden, um das Segment zu laden.

X'18'

Schlüsselinformation falsch oder Fehler beim Lesen von PAM-Lademoduldatei oder Fehler
bei der Ausgabe von Meldungen.

X'1C'

Falscher Segmentname.

X'20'

Fehler beim Laden von AID.

X'24'

Fehler beim Lesen eines C-Elements einer PLAM-Bibliothek.