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
Mit REQM kann zusammenhängender Speicherplatz für das Benutzerprogramm angefordert werden. Mit RELM kann dieser Bereich wieder freigegeben werden. Der Speicherbereich wird als Vielfaches von einer Seite (4 KByte) angefordert. Es wird immer virtueller Speicher zugeteilt. Die Byte der Seite(n) sind mit X'00' überschrieben (Ausnahme: die Seite wurde bereits angefordert).
Makroaufrufformat und Operandenbeschreibung
REQM |
[{zahl / (r)}][,{seite / (r) / LOC={RES / ANY / BELOW / ABOVE}] ,ALIGN=4KB / HW_PAGE [,PARMOD=24 / 31] ,MF=S / (E,..) / L |
zahl
Anzahl der anzufordernden Seiten (4 KByte).
Voreinstellung: zahl = 1.
(r)
r = Register mit der Angabe zahl.
seite
seite = Seitennummer (4 KByte), ab der die Zuweisung beginnen soll.
Voreinstellung:
Niedrigste Seitennummer des ersten freien und ausreichend großen Bereichs im Klasse-6-Speicher des Aufrufers. Der Bereich kann bei Funktionsausführung ausgerichtet werden (z.B. auf ein Vielfaches von 16 Seiten), wenn die Anzahl der angeforderten Seiten einen bestimmten Wert überschreitet.
Hinweis
Der Operand sollte nur spezifiziert werden, wenn vorher Lage und Größe des Klasse-6-Speichers des Aufrufers mit dem Makro MINF abgefragt wurde.
(r)
r = Register mit der Angabe seite.
LOC=
bezeichnet den Teil des Klasse-6-Speichers, in dem die Speicherseiten reserviert werden sollen (unterhalb oder oberhalb der 16MB-Grenze).
Der Operand wird ignoriert, wenn die 24-Bit-Schnittstelle benutzt wird.
RES
Die Speicherseiten werden in dem Teil des Klasse-6-Speichers reserviert, in dem der Makroaufruf erfolgt.
ANY
Die Speicherseiten werden abhängig vom Adressierungsmodus wie folgt reserviert:
Unterhalb der 16MB-Grenze, wenn der 24-Bit-Adressierungsmodus eingeschaltet ist, bzw.
Oberhalb oder unterhalb der 16MB-Grenze, wenn der 31-Bit-Adressierungsmodus eingeschaltet ist.
BELOW
Die Speicherseiten werden unterhalb der 16MB-Grenze reserviert.
ABOVE
Die Speicherseiten werden oberhalb der 16MB-Grenze reserviert.
ALIGN=
gibt die Ausrichtung des gewünschten Speicherbereichs an.
4KB
Der gewünschte Speicherbereich soll auf einer 4 KByte-Grenze beginnen.
HW_PAGE
Der gewünschte Speicherbereich soll auf einer Seitengrenze beginnen, die durch die Hardware vorgegeben ist. In diesem Fall müssen die Operanden „zahl“ und „seite“, sofern verwendet, ein Vielfaches (in 4 KByte-Einheiten) der Hardware-Seitengröße sein.
Hinweis
Die Hardware-Seitengröße kann mit dem Makro NSIINF INFO=PAGESIZE ermittelt werden.
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.
Wenn PARMOD nicht spezifiziert wird, 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 Bearbeitung des Makros enthält Register R1 die Adresse der Operandenliste. Nach erfolgreicher Bearbeitung des Aufrufs ist die Anfangsadresse des zugewiesenen Speichers in Register R1 abgespeichert.
R15:
+---------------+ | | | | | |0|0|0|0|0|0|a|a| +---------------+
Über die Ausführung des Makros REQM wird im Register R15 ein Returncode übergeben.
X'aa' | Erläuterung |
X'00' | Die Anforderung wurde erfüllt. Register R1 enthält die Adresse der ersten Seite, auch wenn |
X'04' | Funktion nicht ausgeführt.
|
X'0C' | Funktion nicht ausgeführt.
Kommandos SHOW-USER-ATTRIBUTES). - der Bereich, der unterhalb bzw. oberhalb 16 MB zur Verfügung steht (siehe Ausgabe des Makros MINF).
|
für 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.