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

WriteOperandValue() приватный Метод

private WriteOperandValue ( X86OperandType method, X86OperandSize size, X86Operand operand ) : void
method X86OperandType
size X86OperandSize
operand X86Operand
Результат void
        private void WriteOperandValue(X86OperandType method, X86OperandSize size, X86Operand operand)
        {
            switch (method)
            {
                case X86OperandType.MemoryAddress:
                case X86OperandType.DirectAddress:
                case X86OperandType.ImmediateData:
                {
                    WriteNumber(operand.Value, size);
                    break;
                }
                case X86OperandType.RegisterOrMemoryAddress:
                {
                    if ((operand.ScaledIndex != null) ||
                        (operand.OperandUsage != X86OperandUsage.Normal && operand.Value is X86Register &&
                         (X86Register)operand.Value == X86Register.Esp))
                        _writer.WriteByte(ComputeRegOrMemSibToken(operand));
                    else if (!(operand.Value is X86Register))
                        WriteNumber(operand.Value, X86OperandSize.Dword);
                    break;
                }
                case X86OperandType.RelativeOffset:
                {
                    WriteNumber(Convert.ToUInt32(operand.Value) - (_writer.Position + sizeof (sbyte)), size);
                    break;
                }
            }
        }