public static List <string> LoadFromRegister(IVarCil x, IFunctionCil function, string src)
        {
            List <string> result = new List <string>();

            if (function.LocalCils.Contains(x)) //si y es una variable local
            {
                var index = function.localsDict[x.Name];
                result.Add($"sw ${src}, {index}($sp)");
            }
            else if (function.ArgCils.Contains(x))
            {   //si y es un parametro
                //var index = function.ArgCils.ToList().FindIndex(i => i.Name.Equals(x.Name));
                //result.Add($"move $a{index}, ${src}");
                var index = function.argsDict[x.Name];
                result.Add($"sw ${src}, {index}($sp)");
            }
            return(result);
        }
 protected ZyroCil(IVarCil x)
 {
     X = x;
 }
 public Type_Name(IVarCil x, IHolderCil y) : base(x, y)
 {
 }
 public IsNotConformCil(IVarCil x, IHolderCil a, IHolderCil b) : base(x, a, b)
 {
 }
 public Out_strCil(IVarCil x) : base(x)
 {
 }
 public In_strCil(IVarCil x) : base(x)
 {
 }
 public SubStringCil(IVarCil x, IHolderCil y, IHolderCil i, IHolderCil l) : base(x, y, i)
 {
     L = l;
 }
 public LenghtCil(IVarCil x, IHolderCil y) : base(x, y)
 {
 }
 public AssigCil(IVarCil x, IHolderCil y) : base(x, y)
 {
 }
 public NegCil(IVarCil x, IHolderCil y) : base(x, y)
 {
 }
 public Minor_EqualCil(IVarCil x, IHolderCil y, IHolderCil z) : base(x, y, z)
 {
 }
 public NotEqualCil(IVarCil x, IHolderCil y, IHolderCil z) : base(x, y, z)
 {
 }
 public EqualStringCil(IVarCil x, IHolderCil y, IHolderCil z) : base(x, y, z)
 {
 }
 public DivCil(IVarCil x, IHolderCil y, IHolderCil z) : base(x, y, z)
 {
 }
 public MultCil(IVarCil x, IHolderCil y, IHolderCil z) : base(x, y, z)
 {
 }
 public VCallCil(IVarCil x, IHolderCil t, IHolderCil f) : base(x, t, f)
 {
 }
 public LoadCil(IVarCil x, IVarCil stringCil) : base(x, stringCil)
 {
 }
 //public IVarCil Y { get; set; }
 public GetAttrCil(IVarCil x, IHolderCil y, IHolderCil b) : base(x, y, b)
 {
 }
 public ConcatCil(IVarCil x, IHolderCil y, IHolderCil z) : base(x, y, z)
 {
 }
 public SetAttrCil(IVarCil x, IHolderCil b, IHolderCil y) : base(x, b, y)
 {
 }
 public StrCil(IVarCil x, IVarCil y) : base(x)
 {
     Y = y;
 }
 public TypeManage(IVarCil x, ITypeCil typeCil) : base(x, typeCil)
 {
 }
 public In_intCil(IVarCil x) : base(x)
 {
 }
 public Allocate(IVarCil x, ITypeCil typeCil) : base(x, typeCil)
 {
 }
 public Out_intCil(IVarCil x) : base(x)
 {
 }
 public TypeOf(IVarCil x, IHolderCil typeCil) : base(x, typeCil)
 {
 }
 public Copy(IVarCil x, IHolderCil y) : base(x, y)
 {
 }
 public DecArrayCil(IVarCil x, IHolderCil y) : base(x, y)
 {
 }
 public CallCil(IVarCil x, IFunctionCil f) : base(x, f)
 {
 }
 protected UnaryCil(IVarCil x, IHolderCil y) : base(x)
 {
     Y = y;
 }