private void WriteNumber(object value, X86OperandSize size)
{
switch (size)
{
case X86OperandSize.Byte:
if (value is sbyte || value is short || value is int || value is long)
_writer.WriteSByte(Convert.ToSByte(value));
else
_writer.WriteByte(Convert.ToByte(value));
break;
case X86OperandSize.Word:
if (value is sbyte || value is short || value is int || value is long)
_writer.WriteInt16(Convert.ToInt16(value));
else
_writer.WriteUInt16(Convert.ToUInt16(value));
break;
case X86OperandSize.WordOrDword:
case X86OperandSize.Dword:
if (value is sbyte || value is short || value is int || value is long)
_writer.WriteInt32(Convert.ToInt32(value));
else
_writer.WriteUInt32(Convert.ToUInt32(value));
break;
default:
throw new NotSupportedException();
}
}