[x86] vcpu - runtime/compiler (Script - Backend)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: [x86] vcpu - runtime/compiler (Script - Backend)

Beitrag von cxAlex »

Update.

- If/For/Repeat/While/Switch - Steuerelemente sind nun voll implementiert.
- Variablen Scopes (lokal im Hauptprogramm, lokal pro Procedure, statisch in Procedure, Global)
- Proceduren ("proc") vollständig implementiert, Rekursionen möglich (automatisches Sichern&Wiederherstellen lokaler Variablen), automatisches Initialisieren lokaler Variablen (außer statisch, natürlich), ...
- Ein paar Verbesserungen am Optimizer, ein paar neue Peephole-Regeln und schon in der Code-Generation Phase wird nun versucht die effizienteste aus mehreren verschiedenen Varianten zu wählen.

Und: Pointer :D Anders als in PB ist der "*" nicht Teil des Variablennamens eines Pointers sondern ein Operator, der Dereferenzierungs oder Indirektions-Operator.
Dadurch werden solche (mehr oder weniger sinnvollen) Konstrukte wie in C möglich, bis zu 2 (Pointer-Pointer "**") fallen mir noch sinnvolle Anwendungen ein:

Code: Alles auswählen

var {[x], [p1], [p2], [p3], [p4]}

{[p1] = &[x]}
{[p2] = &[p1]}
{[p3] = &[p2]}
{[p4] = &[p3]}

repeat
  {****(0+[p4]) += 1}
until {[x] == 1000000}
out [x]
Dadurch das nun auch Pointer unterstützt werden kann ich demnächst mit der Implementierung von Strukturen usw. beginnen, Dereferenzierung heißt das Zauberwort, auch die Array werde ich wohl neu implementieren und C - äquivalent zugänglich machen :)

Nebenbei sind beinahe alle Verbesserungen vollständig auf den PB - Part zurückzuführen (Compiler). Lediglich für die Pointer musste ein Indirektionslayer ins Variablen - Management der ByteCode - VM eingezogen werden.

Der Source ist wie immer im Repository zu finden, ebenso alle nötigen Files zum Compilieren (Eclipse - Config Files, usw...) Binarys liegen keine vor, die werden wohl erst wieder geliefert wenn der Cross-Compiler steht, durch die stark verbesserten Syntaktischen Fähigkeiten der Zwischensprache sollte der bald mit reinem Pattern - Matching & Replace zu ermöglichen sein :)

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten