Compiler

Die unter Runtime entwickelten Funktionen werden benutzt um daraus ein Eigenständigen Compiler zu entwickeln. Da diese Arbeit allerdings sehr aufwendig ist, wird ein voll funktionsfähiger Compiler inklusive Editor noch eine weile auf sich warten lassen. In absehbarer Zeit werden erste Beta Versionen erscheinen die erst mal die einfachsten Scaner und Parser Funktionen demonstrieren. Codegenerierung allerdings wird noch eine Weile dauern, und ist auch abhängig von der Entwicklung der Runtime Prozeduren.

Das Ziel wäre es am Ende eine gute Basis zu haben auf der ein Compiler soweit entwickelt werden kann, das er Visual-Basic ersetzen könnte. Das heißt das der Compiler alle mathematischen Operationen String und Array unterstützt und Code in eigenständige EXE Dateien compilieren kann.
Die ersten Versionen werden allerdings erst nur Code simulieren, dann interpretieren können.

  • Simulieren bedeutet das der Code nur Intern verarbeitet wird und Ergebnisse ausgegeben werden. zB. das eine Codezeile wie
    B = 1: C = 2: D = 3
    A = B + C * D ^ 4
    korrekt berechnet und das Resultat A = 163 ausgegeben werden kann.
  • Interpretieren bedeutet das der Code tatsächlich ausgeführt wird, jede Funktion aber nicht als Maschinencode verarbeitet wird sondern der Interpreter für jeder Operation eine kleine Prozedur ausführt.
    Im Simulieren sind die Funktionen aber noch nicht enthalten (dieses würde eine komplette Runtime benötigen), sondern verwendet die gleichen Funktion in welcher der Simulator selbst geschrieben ist, also werden intern die VB6 Funktionen und dessen Runtime verwendet. Deshalb die Unterscheidung zwischen Simulator und Interpreter, das interpretieren des Codes funktioniert bei beiden auf die gleiche weise, da aber der Interpreter keine eigene eigenständige Runtime-Bibliothek hat wird er hier Simulator genannt.
  • Compilieren bedeutet dann das tatsächlich echter Maschinencode ausgegeben werden kann. Am sinnvollsten zuerst als ASM und dieser wird dann in eine ausführbare Binärdatei compiliert. Der Compiler enthält also eigentlich 2 Compiler, der erste wandelt die Hochsprache in ASM um, und der zweite den ASM-Code in Binärcode. Da es einige Opensource ASM Compiler gibt, kann man diese verwenden um den ASM-Code zu OBJ zu compilieren und über ein Linker zu einer EXE/DLL zusammenzufügen.




(Bisher war allerdings kein Interesse an einem solchen Projekt festzustellen, die Entwicklung wurde deshalb erst mal unterbrochen.)

Compiler

Compiler Compiler-Entwicklung auf Grundlage der Runtime-Basic Prozeduren

Planung Planung des Compilers

Basis Grobe Skizze eines Compilers
Codebaum Erzeugen eines Codebaums (im Parser)
Optimierung Optimierung des generierten Codes


 

Compiler/Compiler.txt · Zuletzt geändert: 2008/05/22 11:58 von Runtime-Basic