public IEnumerable <DataBufferUint> GetUintEnumerator() { // This iterator works from the bottom of the stack // upwards, just like Symbian OS/ARM stack allocation // // // Count = 12 // // [0123][4567][89AB] // int count = iData.Count; // for (int i = count - 4; i >= 0; i -= 4) { DataBufferByte e0 = iData[i + 0]; DataBufferByte e1 = iData[i + 1]; DataBufferByte e2 = iData[i + 2]; DataBufferByte e3 = iData[i + 3]; // uint value = Combine(e0, e1, e2, e3); DataBufferUint ret = new DataBufferUint(value, e0.Address); yield return(ret); } }
private uint UpdateUsingOffsetFromStackTop(ArmRegister aSp, DataBuffer aStackData) { uint stackTop = aStackData.Last.Address + 1; uint offset = OffsetAsDWord; uint fetchAddr = stackTop - offset; DataBufferUint val = aStackData[fetchAddr]; return(val); }
private uint UpdateUsingOffsetFromSp(ArmRegister aSp, DataBuffer aStackData) { uint sp = aSp; uint offset = OffsetAsDWord; uint fetchAddr = offset + sp; DataBufferUint val = aStackData[fetchAddr]; return(val); }
public DataBufferUint this[uint aAddress] { get { DataBufferUint ret = new DataBufferUint(0, aAddress); // foreach (DataBufferUint uintEntry in GetUintEnumerator()) { if (uintEntry.Address == aAddress) { ret = uintEntry; break; } } // return(ret); } }
uint IArmStackInterface.StackValueAtAddress(uint aAddress) { DataBufferUint entry = base.SourceData[aAddress]; return(entry.Uint); }