private static X86RegOrMemModifier DetermineRegOrMemModifier(X86Operand operand)
{
if (operand.Value is X86Register)
{
switch (operand.OffsetType)
{
case X86OffsetType.None:
return operand.OperandUsage == X86OperandUsage.Normal
? X86RegOrMemModifier.RegisterOnly
: X86RegOrMemModifier.RegisterPointer;
case X86OffsetType.Short:
return X86RegOrMemModifier.RegisterDispShortPointer;
case X86OffsetType.Long:
return X86RegOrMemModifier.RegisterDispLongPointer;
}
throw new NotSupportedException("Unsupported or unrecognized operand offset type.");
}
if (operand.Value is uint)
return X86RegOrMemModifier.RegisterPointer;
throw new ArgumentException("Operand is not a valid RegOrMem operand.", "operand");
}