Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

REQM - Speicherbereich anfordern

&pagelevel(3)&pagelevel

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
die Seite bereits vorher angefordert wurde.

X'04'

Funktion nicht ausgeführt.

  • Nicht genügend zusammenhängender, freier Speicherplatz im Adressraum verfügbar.

  • Nicht genügend freier Platz auf dem Hintergrundspeicher (Paging Area) verfügbar.

X'0C'

Funktion nicht ausgeführt.

  • Unzulässige Adresse des Datenbereichs.

  • Unzulässiger Aufbau des Datenbereichs.

  • Die angeforderte Anzahl an Seiten ist größer als
    - der Wert für den ADDRSPACE-Operanden im Benutzerkatalog (siehe Ausgabe des

Kommandos SHOW-USER-ATTRIBUTES).

- der Bereich, der unterhalb bzw. oberhalb 16 MB zur Verfügung steht (siehe Ausgabe

des Makros MINF).

  • Der angeforderte Bereich liegt (zum Teil) außerhalb des Klasse-6-Speichers.

  • Der angeforderte Bereich überschneidet sich (zum Teil) mit einem Memory Pool.

  • Es ist ALIGN=HW_PAGE angegeben, aber „zahl“ oder „seite“ ist kein Vielfaches der
    Hardware-Seitengröße (in 4 KByte-Einheiten).

für 31-Bit-Schnittstelle: