next up previous
Nächste Seite: Absolute Variablen Aufwärts: Variablen Vorherige Seite: Register-Variablen und -Parameter


Globale Variablen

Bei den globalen Variablen wird zwischen zwei verschiedenen Arten unterschieden: - und -Variablen. Wird die dafür verantwortliche Option ,,LargeVars`` nicht explizit auf FALSE gesetzt, werden standardmässig alle global deklarierten, ,,normalen`` (siehe obige Aufstellung) Variablen als -Variablen angelegt, andernfalls als -Variablen.

Wer auf die Residentfähigkeit seiner Programme nicht verzichten, Teile in Assembler programmieren oder ,,fremde`` (C, Assembler) Teile zum Programm hinzulinken möchte, sollte folgende Ausführungen beachten:

-Variablen
werden absolut lang adressiert. Sie unterliegen keinerlei Einschränkungen, erzeugen jedoch längeren und langsameren Code. Sobald aber auch nur ein einziges Modul eines Programmes -Variablen benutzt, ist dieses Programm nicht mehr residentfähig!

-Variablen
sind ,,schneller`` und ,,kürzer``, sparen also Laufzeit und Code, weil sie immer mit einem 16Bit-Offset relativ zum Basisregister A4 adressiert werden. Hierdurch ergeben sich zwei Einschränkungen:
  1. Ein Modul darf maximal 32KByte mit -Variablen belegen. Überschreitungen meldet der Compiler als Fehler.
  2. Ein Programm darf maximal 64KByte -Variablen besitzen. Die Einhaltung kann erst der Linker überprüfen und als Fehler melden.

Der Typ der globalen Variablen ist jeweils pro Compilationseinheit (Modul) festgelegt. Dies bestimmt die Compiler-Option . Hierbei ist unbedingt darauf zu achten, dass Definitions- und Implementationsmodule mit derselben Option übersetzt werden, sofern in den Definitionsmodulen ,,normale`` (also keine absoluten oder externe) Variablen deklariert werden. Andernfalls erfolgt eine Fehlermeldung.

Standardmässig werden -Variablen erzeugt, um die Anzahl globaler Variablen (bzw. die Grösse des von ihnen belegten Speichers) nicht von vornherein einzuschränken. Man sollte jedoch möglichst immer die Option ,,LargeVars:=FALSE`` bzw. ,,-y`` einsetzen, um kompakten und schnellen Code zu erzeugen. Alle zum -System gehörigen Standard-Moduln -- Profiler-Modul ausgenommen -- enthalten möglichst wenige globale Variablen und sind im -Modell kompiliert.


next up previous
Nächste Seite: Absolute Variablen Aufwärts: Variablen Vorherige Seite: Register-Variablen und -Parameter
Claudio Nieder 2000-11-12