Wie Ken White erklärte, wird es nur in 16-Bit-Anwendungen verwendet.
Da ein 16-Bit-Zeiger nur 64 KB Speicher adressieren kann, werden Speichersegmente verwendet, um auf mehr Speicher zuzugreifen. Der Prozessor hat vier Segmentregister, so dass er vier aktive Segmente zur gleichen Zeit haben kann, ein Codesegment (cs), ein Datensegment (ds), ein Stapelsegment (ss) und ein zusätzliches Segment (es). Jedes Segment ist 64 kb groß, aber sie können den gleichen Speicherbereich oder die Überlappung der Parteien adressieren.
A nahe Zeiger ist ein 16-Bit-Zeiger innerhalb desselben Segments. Es wird als Zeiger auf Daten oder Code im selben Modul verwendet.
Ein Fernzeiger ist ein 16 + 16-Bit-Zeiger, der aus einem 16-Bit-Segmentoffset und einem Nahzeiger besteht. Es wird als Zeiger auf Daten oder Code in einem anderen Modul verwendet. Wenn Sie einen far-Zeiger verwenden, um eine Prozedur aufzurufen, wird der Segmentteil in die cs- und ds-Register (IIRC) eingefügt, um auf den Code und die Daten in diesem Modul zuzugreifen.
Die physikalische Adresse eines Segments + Zeigerpaar wird als Segment * 16 + Zeiger berechnet. Das bedeutet, dass ein 16-Bit-Programm 1024 kB Speicher adressieren kann. Um auf mehr Speicher zugreifen zu können, werden die beiden erweiterten und erweiterten Speichertechniken verwendet. (Auch die hohe Speichertechnik in gewissem Umfang, bei der die Adresse nicht mit einer 1-MB-Grenze umgeht, aber mit dem Segmentoffset FFFF erhalten Sie direkten Zugriff auf 65520 Byte Erweiterungsspeicher.)
Near Pointer wurden nie unterstützt. Das Far-Schlüsselwort wird auf Prozeduren angewendet, die in der Implementierung deklariert sind, die Sie jedoch weitgehende Aufrufkonventionen verwenden möchten. Wenn sie also über einen Zeiger aufgerufen würden, würden sie eher eine ferne Rückgabe als eine nahe Rückgabe ausführen. –
Das Schlüsselwort geht zurück über Delphi 1, zu Borland/Turbo Pascal ... – Guffa