Erste Ideen zur Umsetzung in C

Wir werden einen C-Compiler nicht dazu bewegen k÷nnen, unsere in C geschriebenen Primitives mit Befehlen entsprechend der next-Operation abzuschlieáen, wie man das in einer Assembler-Implementation macht. Auáerdem k÷nnen wir ihn nicht dazu überreden, irgendwo einfach hinzuspringen, ohne sich um die Rückkehr zu kümmern.

Ruft er ein als C-Funktion definiertes Primitive auf, wird er sicherlich auf einem Unterprogramm-Sprung bestehen. Dem Primitive wird er entsprechend einen Unterprogramm-Rücksprung anfügen. Der innere Interpreter wird in erster Näherung10 zu einer Schleife:

for (;;) (*ip++) ();

IP ist hier ein Zeiger auf Zeiger auf Funktionen, die Primitives realisieren. Compilierte High-Level-Definitionen sind also Listen von Zeigern auf die Funktionen, die die hineincompilierten Primitives realisieren.

Die Operation (*ip++)() kann man sich als next vorstellen, die for-Schleife drumherum hebt den Effekt des Unterprogramm-Sprungs wieder auf.



Unterabschnitte