namespace ARMeilleure.IntermediateRepresentation { class MemoryOperand : Operand { public Operand BaseAddress { get; set; } public Operand Index { get; set; } public Multiplier Scale { get; private set; } public int Displacement { get; private set; } public MemoryOperand() { } public MemoryOperand With( OperandType type, Operand baseAddress, Operand index = null, Multiplier scale = Multiplier.x1, int displacement = 0) { With(OperandKind.Memory, type); BaseAddress = baseAddress; Index = index; Scale = scale; Displacement = displacement; return this; } } }