Esempio n. 1
0
        /// <summary>
        /// 变长参数指令。把传递给当前函数的连续多个参数加载到连续的指定寄存器中。A操作数指定第一个寄存器。B操作数指定数量。C操作数没用
        /// b == 1,表示没有,b > 1,表示 b-1个参数,b = 0表示把从栈顶到a的所有寄存器全部加载
        /// </summary>
        /// <param name="i"></param>
        public void Vararg(Instruction i)
        {
            int a = 0, b = 0, c = 0;

            i.ABC(ref a, ref b, ref c);
            a += 1;
            //b > 1和b>0统一处理
            if (b != 1)
            {
                luaState.LoadVararg(b - 1);
                PopResults(a, b);
            }
        }