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 AddressDirect : Address {
        public readonly string Label;
        public readonly uint Address;
        public readonly RegistersEnum? Register;

        public AddressDirect(RegistersEnum aRegister)
        {
            Register = aRegister;
        }

        public AddressDirect(UInt32 aAddress) {
            Address= aAddress;
        }

        public AddressDirect(string aLabel) {
            Label = aLabel;
        }

        public override string ToString() {
            if (Label == null) {
                return Address.ToString();
            } else {
                if (Register != null) {
                    return Registers.GetRegisterName(Register.Value);
                }
                return Label;
            }
        }

    }
}
