Als Ergebnis der Übersetzung eines Quellprogramms liefert der C/C++-Compiler ein Bindelademodul (LLM). Dieses Modul besteht bereits aus Maschinencode. Damit dieser Code jedoch im Rechner ablaufen kann, müssen die erzeugten Module mit anderen Modulen zu einer ablauffähigen Einheit zusammengefügt (= gebunden) werden. Die zusätzlich benötigten Module sind z.B. Module des Laufzeitsystems.
Ferner können weitere Module (z.B. von Unterprogrammen in anderen Sprachen oder von getrennt übersetzten C/C++-Programmteilen) eingebunden werden. Diese weiteren Module können dabei zu unterschiedlichen Zeiten und von verschiedenen Compilern übersetzt worden sein.
Die wichtigste Funktion des Binders besteht darin, die für die ladefähige Einheit erforderlichen Module aus den verschiedenen Quellen (Dateien, Bibliotheken) abzurufen und miteinander zu verknüpfen. Die Verknüpfung besteht darin, dass der Binder jedes Modul um diejenigen Adressen ergänzt, die sich auf Bereiche außerhalb des Moduls beziehen (Externverweise).
Damit die beim Binden erzeugte Einheit ablaufen kann, muss ein Lader sie in den Speicher bringen, so dass der Rechner auf den Code zugreifen und ihn ausführen kann.
Für die Aufgaben des Bindens und Ladens stehen im Binder-Lader-Starter-System des BS2000 folgende Funktionseinheiten zur Verfügung:
Dynamischer Bindelader DBL
Der dynamische Bindelader DBL fügt in einem Arbeitsgang Module (Objektmodule, LLMs) zu einer temporär ladbaren Einheit zusammen, lädt diese sofort in den Speicher und startet sie.
Binder BINDER
Der BINDER bindet Module (Objektmodule, LLMs) zu einer logisch und physikalisch strukturierten ladbaren Einheit zusammen. Diese Einheit bezeichnet man als „Bindelademodul“ (Link and Load Module, LLM). Abgespeichert wird ein LLM vom BINDER als Element vom Typ L in einer PLAM-Bibliothek.
Es gibt zwei Möglichkeiten, Programme mit dem BINDER zu binden:
Direkt durch Aufruf des BINDER mit dem Kommando START-BINDER
Implizit mit den Compiler-Anweisungen BIND und MODIFY-BIND-PROPERTIES
Auf die Compiler-Anweisungen wird in diesem Kapitel nicht mehr näher eingegangen, da sie ausführlich im Kapitel Übersetzen in den Abschnitten "BIND" und "MODIFY-BIND-PROPERTIES" beschrieben sind.
Module, die in den C-Modi und im Cfront-C++-Modus des Compilers erzeugt werden, können dynamisch mit dem DBL, statisch mit dem BINDER sowie mit der BIND-Anweisung des Compilers (d.h. implizit mit dem BINDER) gebunden werden.
Das Binden von C++ V3, C++ 2017 bzw. C++ 2020-Modulen muss mit der BIND-Anweisung des Compilers erfolgen. Siehe auch Abschnitt „Einschränkung beim Binden von C++-Programmen“.
Die zum Binden von C/C++-Programmen benötigten C- und C++-Laufzeitmodule sind Bestandteil des CRTE. Einen Überblick über alle C/C++-spezifischen CRTE-Bibliotheken finden Sie im Abschnitt „C/C++-spezifische Komponenten des CRTE“. Ausführlichere Informationen mit entsprechenden Hinweisen zum Binden speziell der C++-Laufzeitbibliotheken können Sie dem Kapitel „C++-Bibliotheken und C++-Laufzeitsystem“ entnehmen.