Exemple #1
0
        /// <summary>
        /// 将常量表的某个常量加载到指定寄存器,寄存器索引由a指定,常量表索引由b指定
        /// </summary>
        /// <param name="i"></param>
        public void LoadK(Instruction i)
        {
            int a = 0, bx = 0;

            i.ABX(ref a, ref bx);
            a += 1;
            luaState.GetConstVar(bx);
            luaState.Replace(a);
        }
Exemple #2
0
        /// <summary>
        /// 将一个函数原型实例化为一个closure对象,然后放入指定寄存器内。由操作数A指定,函数原型由bx操作数指定
        /// </summary>
        /// <param name="i"></param>
        public void Closure(Instruction i)
        {
            int a = 0, bx = 0;

            i.ABX(ref a, ref bx);
            a += 1;
            luaState.LoadPrototype(bx);
            luaState.Replace(a);
        }
Exemple #3
0
        /// <summary>
        /// 使用iabx模式指令,Ax操作数使用26位bit编码,最大可以表示67108864索引号
        /// </summary>
        /// <param name="i"></param>
        public void LoadKX(Instruction i)
        {
            int a = 0, bx = 0;

            i.ABX(ref a, ref bx);
            a += 1;
            int ax = new Instruction(luaState.Fetch()).AX();

            luaState.GetConstVar(ax);
            luaState.Replace(a);
        }