Ich habe die Programmierung in Lua überflogen, ich habe mir die Lua-Referenz angeschaut.
Beide sagen mir jedoch, dass diese Funktion das tut, aber nicht wie .
Beim Lesen von SICP bekam ich folgendes Gefühl: "Ah, hier ist das Berechnungsmodell, das dem Schema zugrunde liegt"; Ich versuche, den gleichen Sinn in Bezug auf Lua zu bekommen - d. H. Eine prägnante Beschreibung davon ist vm, ein "wie" und nicht ein "was".
Kennt jemand ein gutes Dokument (neben der C-Quelle), das das beschreibt?
Vielleicht möchten Sie die Instruktionen zu No-Frills Intro to Lua 5 (.1) VM lesen (wählen Sie eine Klicken Sie auf den Tab "Dokumente" und wählen Sie "Englisch - & gt; Go".
Ich erinnere mich nicht genau an wo ich es gesehen habe, aber ich erinnere mich daran, gelesen zu haben, dass die Autoren von Lua die Endnutzer ausdrücklich davon abhalten, zu sehr ins Detail auf der VM zu kommen; Ich denke, sie wollen, dass es so detailliert wie möglich umgesetzt wird.
Neben bereits erwähnten Ein No-Frills-Einführung in Lua 5.1 VM Anweisungen , Sie könnte an diesem ausgezeichneten Beitrag von Mike Pall interessiert sein, wie man Lua so liest.
Siehe auch die Lua-Users Wiki-Seite .
Ich habe Die Implementierung von Lua 5.1 sehr nützlich gefunden, um zu verstehen, was Lua tatsächlich macht.
Es erklärt die Hashing-Techniken, Garbage Collection und einige andere Kleinigkeiten.
Das Rechenmodell, das Lua zugrunde liegt, ist ziemlich genau dasselbe wie das Rechenmodell, das Schema zugrunde liegt, außer dass die zentrale Datenstruktur nicht die Cons-Zelle ist; es ist die veränderbare Hash-Tabelle. (Zumindest bis Sie Metaprogrammierung mit Metatabellen durchführen.) Sonst sind alle vertrauten Dinge vorhanden: verschachtelte First-Class-Funktionen mit veränderbaren lokalen Variablen (Let-gebundene Variablen in Scheme) und so weiter.
Es ist mir nicht klar, dass Sie viel von einem Studium der VM bekommen würden. Ich habe vor einiger Zeit auf der VM gehackt und es ist sehr ähnlich wie jede andere registerorientierte VM, obwohl vielleicht ein bisschen sauberer. Nur eine Handvoll Anweisungen sind Lua-spezifisch.
Wenn Sie neugierig auf die Metatabellen sind, wird die Semantik in der Sektion klar, wenn auch etwas ausführlich beschrieben 2.8 des Referenzhandbuchs für Lua 5.1 . Wenn Sie sich den VM-Code in src/lvm.c
ansehen, sehen Sie fast genau die in C implementierte Logik (z. B. die interne Funktion Arith
). Die VM-Anweisungen sind auf die häufigsten Fälle spezialisiert, aber alles ist sehr einfach. nichts schlaues ist beteiligt.
Seit Jahren möchte ich eine formalere Spezifikation von Lua's Berechnungsmodell, aber mein Geschmack läuft mehr auf formale Semantik hinaus ...
Ein weiteres großartiges Papier ist Die Implementation von Lua 5.0 , das das Design und die Motivation verschiedener Schlüsselsysteme beschreibt VM. Ich fand, dass es eine gute Möglichkeit war, zu analysieren und zu verstehen, was ich im C-Code sah.
Ich bin überrascht, dass Sie sich auf die C-Quelle für die VM beziehen, da diese von lua.org und dem tecgraf / pucrio in Brasilien geschützt wird, da die Sprache in einer Reihe von Ländern für reale geschäftliche und kommerzielle Anwendungen verwendet wird. Das Dokument über die Implementierung von lua enthält Details über die VM, die im Detail enthalten sein können, aber die Struktur der VM ist proprietär. Es ist erwähnenswert, dass die Versionen 5.0 und 5 'von IBM in Europa zur Verwendung auf Kunden-Mainframes in Betrieb genommen wurden und ihre registerbasierte Version eine VM besitzt, die das von IBM definierte Format von Zwischenbefehlen akzeptiert.
Tags und Links lua