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; }