AsmResolver.X86.X86Assembler.ComputeRegOrMemToken C# (CSharp) Метод

ComputeRegOrMemToken() приватный статический Метод

private static ComputeRegOrMemToken ( X86Operand operand ) : byte
operand X86Operand
Результат byte
        private static byte ComputeRegOrMemToken(X86Operand operand)
        {
            // Mechanism:
               // http://ref.x86asm.net/coder32.html#modrm_byte_32

            // ModR/M byte:
            //  mod | reg/mem | (reg2)
            // -----+---------+-------
            //  7 6 |  5 4 3  | (2 1 0)

            var modifier = DetermineRegOrMemModifier(operand);
            var token = (byte)((byte)modifier << 6);

            if (operand.ScaledIndex != null)
                token |= ComputeRegisterToken(X86Register.Esp);
            else if (operand.Value is X86Register)
                token |= ComputeRegisterToken((X86Register)operand.Value);
            else
                return ComputeRegisterToken(X86Register.Ebp);

            return token;
        }