Nächste Seite: Bibliotheksmoduln Aufwärts: Interna von M2Amiga Vorherige Seite: Register-Erhaltung

#
Leistungsgrenzen von M2Amiga

Neben den in Abschnitt 5.1 beschriebenen Erweiterungen gibt es leider auch ein paar zu verschmerzende Wermutstropfen. Ein Compiler ist immer auch einigen Einschränkungen unterworfen, sei es durch die Implementation, das darunterliegende Betriebssystem oder durch die Hardware, auf der der Compiler läuft. Da das unvorbereitete Auftreten solcher Einschränkungen sehr ärgerlich sein kann, sind sie im folgenden aufgelistet, auch wenn Sie kaum an die Grenzen stossen werden.

- Maximale Bezeichnerlänge: 1024 Zeichen
- Maximale Länge von Zeichenketten-Konstanten ohne Aneinanderreihung: 1024 Zeichen. Mit Aneinanderreihung (Operator ,,`+```) sind Zeichenketten bis zu 32767 Zeichen möglich. Zu beachten sind aber die beiden folgenden Beschränkungen.
- Maximale Grösse des Codebereiches pro Modul: 31000 Byte
- Maximale Grösse von Code- und Konstantenbereich zusammen pro Modul: 32 KByte.

  Der Code und die typisierten Konstanten (nur Zeichenketten) müssen innerhalb eines Moduls im Bereich von 32K liegen. Die Gesamtgrösse eines Programms, d.h. eines vollständig gelinkten Moduls, ist allerdings nicht eingeschränkt.

- Maximale Anzahl importierter Moduln pro Compilationseinheit: 64.

  Ein Programm darf aus beliebig vielen Moduln bestehen, vorausgesetzt, jedes Modul importiert höchstens 64 weitere Moduln.

- Maximale Anzahl von Strukturen pro Definitionsmodul: 1024.

  Jeder neue Typ (Aufzählungstypen, Verbunde, Felder, Unterbereiche) bildet eine neue Struktur. Es spielt dabei keine Rolle, wie oft eine Struktur auftritt. Entscheidend ist einzig die Deklaration. Das strikte Einführen von Typnamen reduziert die Anzahl der Strukturen.

- Maximaler Speicherbedarf aller Variablen pro Gültigkeitsbereich: 2 GByte.

  Die Einschränkung pro Gültigkeitsbereich bedeutet, dass in einem Modul mit einem Variablenbedarf von 2 GByte auch jede Prozedur wiederum Variablen bis zur Grösse von 2 GByte deklarieren kann, wobei dann eine entsprechende Stackgrösse gesetzt sein muss, da lokale Variablen auf dem Stack angelegt werden.

- Maximaler Speicherbedarf von -Variablen pro Compilationseinheit: 32 KByte.

  Wenn das Modul im -Modus kompiliert wird, sind alle globalen Variablen diese Moduls auch . Falls dies nicht ausreichen sollte, muss ein kleiner Effizienzverlust in Kauf genommen und das Modul im -Modus kompiliert werden, oder man weicht auf Zeiger aus und alloziert die Variablen zur Laufzeit.

- Maximaler Speicherbedarf von -Variablen pro Programm: 64 KByte.

  Die Überschreitung dieses Wertes kann nur der Linker feststellen. Falls der Fehler auftritt, sollten einzelne Moduln im -Modus kompiliert werden.

- Maximale Anzahl von Konstanten je Aufzählungstyp: 4 294 967 295.
- Maximale Länge des Modulnamens: 31 Zeichen.
- Maximale Anzahl `EXIT`-Anweisungen in `LOOP`-Anweisung: 16.

  Der Compiler kann bis zu 16 unbearbeitete `EXIT`-Anweisungen handhaben. Eine `EXIT`-Anweisung gilt dann als unbearbeitet, wenn die zur `LOOP`-Anweisung gehörige `END`-Anweisung noch nicht erreicht wurde.

- Maximale Tiefe verschachtelter `WITH`-Anweisungen: 3. Zu beachten ist, dass bei 3 ineinander verschachtelter `WITH`-Anweisungen entsprechend drei Adress-Register blockiert sind. Daher ist es dann nicht mehr möglich, Variablen, die mehr als ein Langwort im Speicher belegen -- also `RECORD`s oder `ARRAY`s -- einander zuzuweisen. Diese Operation benötigt nämlich ebenfalls zwei Adress-Register.
- Ausdrucks-Verschachtelungstiefe: 5 `REAL`-Terme oder 2 `LONGREAL`-Terme oder 7 `LONGREAL`-Terme mit 68881/882-FPU oder 68040-CPU.
- Maximale Anzahl von Fällen in einer `CASE`-Anweisung: 128.

  Oftmals kann die Anzahl von Fallunterscheidungen reduziert werden. Die Marke ,,`1..5:``` entspricht nämlich einem Fall, während die Marke ,,`1,2,3:``` drei Fällen entspricht.

- Maximale `SET`-Grösse: 32 Elemente.
- Funktionsresultate: `ARRAY`- und `RECORD`-Typen sind nicht erlaubt.

Nächste Seite: Bibliotheksmoduln Aufwärts: Interna von M2Amiga Vorherige Seite: Register-Erhaltung