using System; using System.Collections.Generic; using System.Linq; using System.Text; using Cosmos.Compiler.Assembler; using Cosmos.Compiler.Assembler.X86; namespace Cosmos.Compiler.XSharp { public class AddressIndirect : Address { public readonly RegistersEnum? Register; public readonly ElementReference Reference; public readonly uint Address; public readonly int Displacement; public AddressIndirect(Register32 aBaseRegister, Int32 aDisplacement) { Register = Registers.GetRegister(aBaseRegister.Name); Displacement = aDisplacement; } public AddressIndirect(uint aBaseAddress, int aDisplacement) { Address = aBaseAddress; Displacement = aDisplacement; } public override string ToString() { if (Register != null) { if (Displacement == 0) { return "[" + Registers.GetRegisterName(Register.Value) + "]"; } else { return "[" + Registers.GetRegisterName(Register.Value) + " + " + Displacement + "]"; } } else { if (Displacement == 0) { return "[" + Address.ToString() + "]"; } else { return "[" + Address.ToString() + " + " + Displacement + "]"; } } } } }