Hallo Maria,
und BASIC war
in den meisten Versionen interpretiert.
Die meisten BASIC-Interpreter sind Compreter oder Interpiler.
Die Schlüsselwörter werden bei der Eingabe schon erkannt und
als Tokens (meistens 1 Byte) abgelegt. Ist im Prinzip auch
schon eine Art von P-Code.
Wie meinst du das? Tokenizing ist doch ein Schritt der
lexikalischen Analyse. Das hat gar nichts mit intermediate
Code, wie wir ihn heute im Zusammenhang mit virtuellen
Laufzeitumgebungen kennen, zu tun.
Richtig, nicht mit der heutigen Technik. Die damaligen CPUs haben aber auch genau so viel mit den Heutigen zu tun.
Effektiv im Speicher wurde der Baum, welcher die lexikalische Stufe erzeugt abgelegt, das ist schon ein Zwischenprodukt.
Damals war weniger die Portierbarkeit, ausser z.B. bei UCSD Pascal, der Ansatz, sondern eine kompakte Speicherausnutzung. Es war nicht unüblich, dass Mehrplatzsysteme mit 16 Usern mit 32KByte Hauptspeicher auskamen.
CBASIC, so um 1977, verwendete auch einen P-Code.
http://de.wikipedia.org/wiki/CBASIC#Eigenschaften
Visual BASIC MS konnten bis zur Version 4 nur P-Code erzeugen, die Versionen 5 und 6 konnten dann wahlweise P-Code oder direkt nativen Code erzeugen.
http://de.wikipedia.org/wiki/Visual_Basic_Classic#19…
Ich selbst Entwickelte ende 70er einen P-Code für spezielle Prüfgeräte. Um keinen Compiler entwickeln zu müssen, wurde der P-Code mit einem Macro-Assembler erzeugt. Der eigentliche Grund war der Platzbedarf für die Prüfabläufe. Grundsätzlich wäre der P-Code portabel gewesen, aber es wurden nicht so viele Prüfgeräte hergestellt, als dass unterschiedliche Hardware verwendet worden wäre.
Reine Interpreter, die also die Eingabe1 zu 1 im Speicher
ablegen, habe ich nur ganz wenige kennen gelernt.
Die legen also eine bereits teilweise analysierte Version des
Quellcodes ab. Das ist aber bereits Teil der Interpretierens
und hat genau gar nix mit compilieren zu tun, wohl eher mit
Performance.
Deshalb wurde diese Technik damals such Interpiler oder Compreter genannt.
http://universal_lexikon.deacademic.com/254206/Interpiler
Wenn ich jetzt ganz tief in der Kiste krame, waren die meisten CPUs schon immer P-Code-Maschinen. Die Assemblerbefehle werden nämlich meistens nicht durch die Hardware direkt abgearbeitet, sondern durch Mikrocode interpretiert.
Typischerweise verwenden CISC-CPUs Mikrocode und RISC-CPUs habe die Befehle fest verdrahtet.
Im Prinzip geht es darum, dass für eine virtuelle Maschine Programme erstellt werden, welche dann über einen Interpreter abgearbeitet werden.
Je nach den Umständen nennt sich der Interpreter dann halt Simulator, Emulator, P-Code-Interpreter oder sonst wie. Die Technik dahinter ist uralt und vom Prinzip her immer die Selbe.
MfG Peter(TOO)