Was sind die Motivationen hinter kompilieren von byte-code?

Ich bin arbeiten, mein eigenes Spielzeug Programmiersprache. Für jetzt bin ich der Interpretation des source-Sprache von AST und ich Frage mich, welche Vorteile das kompilieren in ein byte-code und dann interpretieren, könnte es mir zur Verfügung stellen.

Denn jetzt habe ich drei Dinge im Auge:

  • Traversierung des syntaxbaums hundert mal langsamer als die Ausführung von Anweisungen in einem array, insbesondere, wenn die array-Unterstützung O(1) random access(ie. springen 10 Anweisungen oben und unten).
  • In typisierten Ausführung Umgebung, ich habe einige run-time-Kosten, weil mein AST ist eingegeben, und ich bin ständig Durchlaufen es(ie. Ich habe 10 verschiedene Arten von Knoten, und ich brauche, um zu überprüfen, welche Art ich bin auf jetzt ausführen). Vielleicht kompilieren, um eine nicht typisierte byte-code kann helfen, das zu verbessern, da nach der Typprüfung und Kompilierung, ich hätte eine nicht typisierte Werte und code.
  • Kompilieren von byte-code kann bessere Portabilität.

Sind meine Punkte richtig? Was sind einige andere Motive hinter kompilieren zu bytecode?

  • Durch das laufen auf einem Interpret erhöht es die Portabilität des Codes
  • ja, das war schon in meinem Kopf, ich vergaß hinzuzufügen ..
  • das ist falsch. Serialisiert ASTs werden können, die gleichermaßen tragbar. Bytecode kann in der Tat nicht tragbar; Python-bytecode ist spezifisch für jede version des interpreters.
  • Es ist auch einfacher, als die Interpretation einer AST - bytecode sollte low-level genug. Zusammenstellung einer high-level-Sprache, um eine bytecode-ist einfacher als die Interpretation einer high-level Sprache sofort. E. g., anstatt die Aufrechterhaltung einer Umgebung mit komplizierten Semantik, anstatt sich bis auf Variablen-Namen, etc., Sie müssen nur eine einfache stack-frame der Zugriff über einfaches load-und store-Anweisungen.
InformationsquelleAutor sinan | 2012-07-11
Schreibe einen Kommentar