PASCAL Compiler P5 (N.Wirth) Interpreter für P-Code auch in "C"

  • https://sourceforge.net/p/pasc…/ci/c-asm-int/wip/~/tree/


    Hier befindet sich ein in "C" geschriebenen Assembler und Interpreter für P-Code.

    Der zugehörige PASCAL Compiler (Version P5, erweitert und ISO 7185 vollständig) erzeugt symbolischen P-Code als Ausgabe, welcher dann assembliert und interpretiert wird.


    Der Compiler kann sich selbstverständlich selbst übersetzen.


    Unklarheiten in der Implementation von als Parameter übergebenen Funktionen mit Seiteneffekten auf Variablen übergeordneter Blöcke konnten bisher nicht geklärt werden, ob dazu der Kontext des aktuellen Blockes oder der Kontext des Blockes, in dem die Funktion übergeben wurde, zu nehmen ist...

  • Ich rätsle gerade, auch welcher Hardware und mit welchem C-Kompiler das bei mir lief. 2016 ist eine Weile her...

    Müsste aber mit jedem C-Kompiler gehen, welcher 32 Bit Wortbreite hat.

  • Wäre das auch theoretisch Compilieren mit DJGPP GNU-C & GNU-PASCAL möglich?

    Dazu müsste man ein P-Code Backend schreiben.


    Es wäre schön ein P-Code Backend für einen modernen C-Compiler zu haben.

    Gerade für 8 Bit Computer ist P-Code ein hervorragender Kompromiss.


    Mir würde auch der LCC genügen, der macht hervorragenden Code.

    Und diese LCC Backends sind weitaus weniger kompliziert als GNU.

    Aber mir schwebt da eher ein Interpreter für LCC Intermideate Code vor ...

  • Dazu müsste man ein P-Code Backend schreiben.

    Gemäß einer ganz dunklen Erinnerung soll es in den 1980er einen C-Compiler gegeben haben. Vielleicht erst mit Version IV? Damals wäre das einer nach K&R-Standard geworden.

  • Ich habe es gefunden: war mit cygwin unter Windows oder direkt unter Linux.

    Genau so ist der Ablauf:

    PASCAL-source --> (P5 Compiler) --> P-Code Symbolisch --> (P-Code Assembler) --> P-Code Binär --> (P-Code interpreter)


    Dazu braucht es die Programme pasm.exe und pint.exe (Für Kommandozeile DOS/WIN) oder entsprechend pasm und pint (Linux)


    Der PASCAL Compiler (pcom) selbst liegt als Source und als P-Code Binär vor und kann sich selbst übersetzen. Er wird mit "pint pcom.bin" aufgerufen.

  • Eine Funktion aus startrek.pas


    wird zu