public void skip(int n) { if (n > 0) { memoryWriter.skip(n); memoryReader.skip(n - 1); currentValue = memoryReader.readNext(); } }
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); }
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); } }
public virtual void skipNext32(int count) { index = 0; memoryReader.skip(count); }