Allgemeines
Anwendungsgebiet: | Arbeiten mit virtuellem Speicher; siehe "Arbeiten mit virtuellem Speicher" |
Makrotyp: | S-Typ, MF-Format 1: Standardform/L-/E-Form; siehe "S-Typ-Makroaufrufe" |
Makrobeschreibung
Der Makro RELM gibt einen zusammenhängenden Speicherbereich des Klasse-6-Speichers des Aufrufers frei. Der Speicherbereich wird als Vielfaches von einer Seite (4 KByte) freigegeben.
Es ist erlaubt, Speicher freizugeben, der nicht vorher mit REQM angefordert wurde. Mittels mehrerer REQM-Makroaufrufe angeforderter Speicherplatz kann mit einem RELM freigegeben werden, sofern diese Bereiche zusammenhängend sind.
Makroaufrufformat und Operandenbeschreibung
RELM |
[{zahl / (r)}],{seite / (r)} [,PARMOD=24 / 31] ,MF=S / (E,...) / L |
zahl
Anzahl der Seiten (4 KByte), die freigegeben werden sollen.
Voreinstellung: zahl = 1.
(r)
r = Register, das die Angabe zahl enthält.
seite
Seitennummer der ersten Seite (4 KByte) des Bereichs, der freigegeben werden soll.
(r)
r = Register, das die Seitennummer enthält.
MF=
Zur allgemeinen Beschreibung des Operanden MF, der dazugehörenden Operandenwerte und der evtl. nachfolgenden Operanden (z.B. für einen Präfix) siehe Abschnitt „S-Typ-Makroaufrufe“. Die gültigen MF-Werte sind zu Beginn der Makrobeschreibung bei „Makrotyp“ angegeben und aus dem Aufrufformat ersichtlich.
PARMOD=
steuert die Makroauflösung. Es wird entweder die 24-Bit- oder die 31-Bit-Schnittstelle generiert.
Wird PARMOD nicht spezifiziert, so erfolgt die Makroauflösung entsprechend der Angabe für den Makro GPARMOD oder der Voreinstellung für den Assembler (= 24-Bit-Schnittstelle).
24
Die 24-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 24-Bit-Adressen (Adressraum <= 16 MB).
31
Die 31-Bit-Schnittstelle wird generiert. Datenlisten und Befehle benutzen 31-Bit-Adressen (Adressraum <= 2 GB). Datenlisten beginnen mit dem Standardheader.
Rückinformation und Fehleranzeigen
Während der Makrobearbeitung enthält Register R1 die Adresse des Datenbereichs.
R15:
+---------------+ | | | | | |0|0|0|0|0|0|a|a| +---------------+
Über die Ausführung des Makros RELM wird im Register R15 ein Returncode übergeben.
X'aa' | Erläuterung |
X'00' | Der Speicherplatz wurde freigegeben. |
X'04' | Funktion nur zum Teil ausgeführt. |
X'0C' | Funktion nicht ausgeführt.
|
bei 31-Bit-Schnittstelle:
Bei fehlerhafter Initialisierung des Standardheaders werden zusätzlich die Returncodes X'0001FFFF' / X'0003FFFF' / X'0004FFFF' übergeben; siehe Tabelle „Standard-Returncodes“ (Standardheader).
Im Standardheader wird kein Returncode übergeben.
Beispiele
Das Benutzerprogramm belegt die Seiten 1 bis 12.
Durch RELM 3,10 werden ab Seite 10 drei Seiten freigegeben, also die Seiten 10, 11 und 12.Das Benutzerprogramm belegt die Seiten 1 bis 6.
Durch RELM ,5 wird ab Seite 5 eine Seite freigegeben, also Seite 5.