9

Lua のソース コードを読んでいて、驚いたことに、奇妙な命令 (GETUPVAL、FORLOOP など) を生成するように実装されていることがわかりました。その後、これらのオペコードは仮想マシンによって実行されます。これを行う利点はありますか (純粋な AST ベースのインタープリターと比較して?)

ありがとう。

4

2 に答える 2

10

バイトコード インタープリターと抽象構文ツリー インタープリターの一般的な比較については、Wikipedia:Interpreterを参照してください。

Lua は誕生以来仮想マシンを使用しており、Lua 5.0 でレジスタ ベースの仮想マシンを導入しました (これは、広く使用された最初のレジスタ ベースの仮想マシンです) 。Luaの作成者によって書かれたLua の進化、そのトピックに関する多くのリソースを提供します。

Lua の作成者によって書かれた別の論文、The Implementation of Lua 5.0は、実装に関する多くの詳細を提供します。Chapter 7 The Virtual Machineは特に役に立ちます。この論文は、Lua のソース コードを読むための優れたリファレンスでもあります。

于 2013-07-30T02:50:57.090 に答える