示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
        private uint UpdateUsingOffsetFromSp(ArmRegister aSp, DataBuffer aStackData)
        {
            uint           sp        = aSp;
            uint           offset    = OffsetAsDWord;
            uint           fetchAddr = offset + sp;
            DataBufferUint val       = aStackData[fetchAddr];

            return(val);
        }
示例#4
0
 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);
        }