TUP.AsmResolver.ASM.x86Disassembler.SelectOpCodeFromToken C# (CSharp) Méthode

SelectOpCodeFromToken() private méthode

private SelectOpCodeFromToken ( x86OpCode matches, byte token ) : x86OpCode
matches x86OpCode
token byte
Résultat x86OpCode
        private x86OpCode SelectOpCodeFromToken(x86OpCode[] matches, byte token)
        {
            byte groupIndex = matches[0]._opcodeBytes[0];

            byte hByte = (byte)(token >> 4 << 4);
            byte lByte = (byte)(token - hByte);

            int index = (int)Math.Floor((double)(token % 0x40) / (double)8.0f);

            // 0xff group has got more than 8 instructions with some special tokens.
            if (groupIndex == 0xFF)
            {
                // instructions with lowerbyte of 5 or D are an exception.
                if (lByte == 0x5 || lByte == 0xD)
                    return matches.FirstOrDefault(m => m._opcodeBytes[1] == token);
                else
                    index *= 2;
            }

            if (index < 0 || index >= matches.Length)
                return null;

            return matches[index];
        }