2008-04-25から1日間の記事一覧
というわけで、Lua VM on Lua 略して LuLu を実装するシリーズ第2回です。今日やったことの把握ということで、これ function foo(a,b,c,d) print(a,b,c,d) end function bar(a,b) return b,a end foo(1,2,bar(3,4)) を動かすことを目標にします。
VMの構成はわかったのであとは各命令の実装を見るのみ!!!メインループのluaV_execute関数は、細かいところを除くと非常に素直なループです。例によって、ANSI C 互換にするためにスレッデッドコードのような最適化はしていません、とのことでした。 void …
スタックの構造の次は、Luaの仮想マシン語の命令の構造を見ていきます。命令を表す型 Instruction // llimits.h typedef lu_int32 Instruction; は、32bit整数で、命令毎に、bitの使い方は3通りあります。 ABC型 B:9bit, C:9bit, A:8bit, OpCode:6bit ABx型 …
まず、LuaのVMのスタックがどのように使われるかを調べます。前回ちょっと触れたように、LuaのVMは「レジスタマシン」といえども、スタックと別に特別な「レジスタ」があるわけではありません。ローカル変数や全てスタックに保存されて管理されます。いや、…
今回は Lua VM のメインループの実装を見ていこうと思います。思いました。まず最初に、Lua VMスタックの構造を把握してから・・・と思って始めたら長くなってしまったので、適当なところで次回に回します。^^そういえば A No-Frills Introduction to Lua 5.…