Beispiel #1
0
        /// <summary>
        /// 比较指令,比较两个寄存器或常量表里的值,分别由b和c指定,如果比较结果和a操作数相同,则跳过下一条指令。比较指令不更改寄存器状态
        /// </summary>
        /// <param name="i"></param>
        public void Compare(Instruction i, TokenType opType)
        {
            int a = 0, b = 0, c = 0;

            i.ABC(ref a, ref b, ref c);
            luaState.GetRK(b + 1);
            luaState.GetRK(c + c);
            var  result = luaState.Compare(-2, -1, opType);
            bool aBool  = false;

            if (a == 1)
            {
                aBool = true;
            }
            if ((bool)result.OValue == aBool)
            {
                luaState.AddPC();
            }
        }