Пример #1
0
 public void skip(int n)
 {
     if (n > 0)
     {
         memoryWriter.skip(n);
         memoryReader.skip(n - 1);
         currentValue = memoryReader.readNext();
     }
 }
Пример #2
0
        public virtual int strtol(PspString @string, TPointer32 endString, int @base)
        {
            // base == 0 seems to be handled as base == 10.
            if (@base == 0)
            {
                @base = 10;
            }

            IMemoryReader memoryReader = MemoryReader.getMemoryReader(@string.Address, 1);
            string        s            = @string.String;

            // Skip any leading "0x" in case of base 16
            if (@base == 16 && (s.StartsWith("0x", StringComparison.Ordinal) || s.StartsWith("0X", StringComparison.Ordinal)))
            {
                memoryReader.skip(2);
                s = s.Substring(2);
            }

            for (int i = 0; true; i++)
            {
                int c = memoryReader.readNext();
                if (c == 0 || !isNumberValidCharacter(c, @base))
                {
                    endString.setValue(@string.Address + i);
                    s = s.Substring(0, i);
                    break;
                }
            }

            int result;

            if (s.Length == 0)
            {
                result = 0;
            }
            else
            {
                result = Integer.parseInt(s, @base);
            }

            //if (log.DebugEnabled)
            {
                if (@base == 10)
                {
                    Console.WriteLine(string.Format("strtol on '{0}' returning {1:D}", s, result));
                }
                else
                {
                    Console.WriteLine(string.Format("strtol on '{0}' returning 0x{1:X}", s, result));
                }
            }

            return(result);
        }
Пример #3
0
 private void resetMemoryReader(int oldPc)
 {
     if (pc >= baseMemoryReaderStartAddress && pc < baseMemoryReaderEndAddress)
     {
         memoryReader = baseMemoryReader;
         memoryReader.skip((pc - baseMemoryReader.CurrentAddress) >> 2);
     }
     else if (memoryReader == null || memoryReader == baseMemoryReader || pc < oldPc)
     {
         memoryReader = MemoryReader.getMemoryReader(pc, 4);
     }
     else if (oldPc < MemoryMap.START_RAM && pc >= MemoryMap.START_RAM)
     {
         // Jumping from VRAM to RAM
         memoryReader = MemoryReader.getMemoryReader(pc, 4);
     }
     else
     {
         memoryReader.skip((pc - oldPc) >> 2);
     }
 }
Пример #4
0
 public virtual void skipNext32(int count)
 {
     index = 0;
     memoryReader.skip(count);
 }