using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Indy.IL2CPU.Assembler.X86.X {
    public class Memory {
        public MemoryAction this[Address aAddress] {
            get {
                return new MemoryAction(aAddress.ToString());
            }
            set {
                if (value.IsRegister) {
                    new X86.Move(aAddress.ToString(), value.ToString());
                } else {
                    throw new Exception("For non register assignments to memory, a size must be specified.");
                }
            }
        }

        public MemoryAction this[Address aAddress, byte aSize] {
            get {
                return new MemoryAction(aAddress.ToString(), aSize);
            }
            set {
                // ++ operators return ++
                // Maybe later change ++ etc to return actions?
                if (value != null) {
                    new X86.Move(MemoryAction.SizeToString(aSize), aAddress.ToString(), value.ToString());
                }
            }
        }
    }
}
