/// <summary> /// Returns a list of all stack arguments accessed, indexed by their offsets /// as seen by a caller. I.e. the first argument is at offset 0, &c. /// </summary> public SortedList<int, Identifier> GetSortedStackArguments(Frame frame) { return GetSortedArguments(frame, typeof (StackArgumentStorage), 0); }
public SortedList<int, Identifier> GetSortedFpuStackArguments(Frame frame, int d) { return GetSortedArguments(frame, typeof (FpuStackStorage), d); }
public SortedList<int, Identifier> GetSortedArguments(Frame f, Type type, int startOffset) { SortedList<int, Identifier> arguments = new SortedList<int,Identifier>(); foreach (Identifier id in f.Identifiers) { if (id.Storage.GetType() == type) { int externalOffset = f.ExternalOffset(id); //$REFACTOR: do this with BindToExternalFrame. if (externalOffset >= startOffset) { Identifier vOld; if (!arguments.TryGetValue(externalOffset, out vOld) || vOld.DataType.Size < id.DataType.Size) { arguments[externalOffset] = id; } } } } return arguments; }