private static void Main(string[] args) { // var l=new List<int>(); // l.Add(1); // l.Add(2); // l.Add(3); // l.Add(4); // l.Reverse(1,2); // l.ForEach(Console.WriteLine); if (args.Length <= 0) { return; } try { var fs = File.OpenRead(args[0]); var data = new byte[fs.Length]; fs.Read(data, 0, data.Length); var ls = new state.LuaState(); ls.Register("print", print); ls.Register("getmetatable", getMetatable); ls.Register("setmetatable", setMetatable); ls.Load(ref data, "chunk", "b"); ls.Call(0, 0); } catch (Exception e) { Console.WriteLine(e.ToString()); } // Console.ReadKey(); }
static void luaMain(Prototype proto) { var nRegs = proto.MaxStackSize; var ls = new state.LuaState().New(nRegs + 8, proto); ls.SetTop(nRegs); for (;;) { var pc = ls.PC(); var inst = new Instruction(ls.Fetch()); var opCode = inst.Opcode(); // var opMode = inst.OpMode(); if (opCode != OpCodes.OP_RETURN) { inst.Execute(ls); Console.Write("[{0:D2}] {1}", pc + 1, inst.OpName()); printStack(ls); } else { break; } } }