예제 #1
0
        bool IBranchHandler.HandleSwitch(Int32Value switchIndex)
        {
            if (!switchIndex.AllBitsValid())
            {
                return(false);
            }
            var instr   = instructions[emulateIndex];
            var targets = (Instruction[])instr.Operand;

            if (switchIndex.Value >= 0 && switchIndex.Value < targets.Length)
            {
                emulateIndex = instructions.IndexOf(targets[switchIndex.Value]);
            }
            else
            {
                emulateIndex++;
            }
            return(true);
        }