
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Hallo RIP, du wolltest uns wohl in Deinem vorletzten Beitrag aufs Glatteis führen mit Deiner Behauptung, "10 GOTO 10" würde 10 Byte belegen? Natürlich sind es nur 9: ![]() > Das stimmt. > 10 goto 11 > wird so abgelegt: 0A 00 89 20 31 31 00 00 00 > Zumindest das GOTO wird in einen Token übersetzt, die Sprungadresse ist Text. Ganz genauso habe ich es erwartet. Auf diese Weise wird in fast allen mir bekannten 8-Bit-BASIC-Dialekten tokensiert. Die Parameter, Argumente, Variablennamen, Kommentare, etc. werden im Klartext gespeichert. Erst etwas neuere Interpreter kürzen ab, indem zum Beispiel Verweise auf Variablen eingefügt werden. Das kostet aber Speicherplatz. Trotzdem würden die Entwickler ihr Produkt niemals als Compiler, sondern immer als Interpreter bezeichnen. Das ist nämlich die Fachbezeichnung. Im Buch "ROM-Listing CPC464/664/8128" steht: Im Handbuch des Schneider-CPC in von einem Basic-Interpreter die Rede, der die Basic-Programme ausführt. [...] Das Schneider-Basic geht einen Mittelweg zwischen Interpreter und Compiler. Jede einzelne Programmzeile wird schon in gewissem Grade übersetzt, bevor sie ins Programm eingefügt wird. Die Zeile wird bei der Ausführung aber dennoch interpretiert. Die Interpretation geht aber schneller vonstatten als bei einer nicht übersetzten Zeile. Eine solche Interpreterart wird auch "Compreter" genannt. Einfache Compiler auf 8-Bit-Rechnern haben tokensierte BASIC-Programme zwar nach Maschinensprache umgesetzt, aber es wurden weiterhin die Routinen des Betriebssystems benutzt. Deshalb waren diese kaum (maximal 10-mal) schneller als interpretiert. Richtig schnell wurde es erst, nachdem optimiert wurde. Aber ich muß Dir Recht geben, die tokensierten Programme der C-Control werden mit hoher Geschwindigkeit ausgeführt, das heißt, die Interpretation erzeugt wenig Overhead. Doch das liegt einfach daran, daß die C-Control-Tokenbefehle selbst nicht sehr effektiv sind. Selbst bei einfachen Wertzuweisungen wird ein Stack zwischengeschaltet, was natürlich Ausführungszeit kostet. Bei 8 MHz Takt und 20000 Basicbefehlen pro Sekunde entfallen 400 Zyklen auf jeden Befehl. Bei einem echten Compiler dürften das 10 bis 20 mal weniger sein. Aus diesem Grund ist die Behauptung auf der Support-Seite sachlich falsch. Die Beiträge bei Wikipedia stammen übrigens von Privatleuten und sind deshalb mit Vorsicht zu genießen. Wobei ich in diesem Fall Wikipedia Recht geben muß: *Reine* Interpreter dürften so arbeiten. Allerdings gab es in der Computergeschichte niemals reine Interpreter. ![]() Gruß, Dietmar Meine Homepage: http://ccintern.dharlos.de |
| Antwort schreiben |