示例#1
0
文件: MemoryMap.cs 项目: griderd/gsvm
 public void Remap(T name, uint address, uint length)
 {
     if (!map.ContainsKey(name))
     {
         throw new ArgumentException("A mapped range with that name does not exist.");
     }
     map[name] = new SmartPointer(address, length);
 }
示例#2
0
文件: MemoryMap.cs 项目: griderd/gsvm
 public void Map(T name, SmartPointer ptr)
 {
     if (map.ContainsKey(name))
     {
         throw new ArgumentException("A mapped range with that name already exists.");
     }
     map.Add(name, ptr);
 }
示例#3
0
文件: MemoryMap.cs 项目: griderd/gsvm
 public void Remap(T name, SmartPointer ptr)
 {
     if (!map.ContainsKey(name))
     {
         throw new ArgumentException("A mapped range with that name does not exist.");
     }
     map[name] = ptr;
 }
示例#4
0
 /// <summary>
 /// Determines if the provided pointer collides with this pointer.
 /// </summary>
 /// <param name="ptr">Another pointer</param>
 /// <returns>Returns true if there is overlap. Otherwise, returns false.</returns>
 public bool Overlaps(SmartPointer ptr)
 {
     if ((ptr.Address >= Address) & (ptr.Address < Address + Length))
     {
         return(true);
     }
     if ((ptr.Address + ptr.Length >= Address) & (ptr.Address + ptr.Length <= Address + Length))
     {
         return(true);
     }
     return(false);
 }
示例#5
0
文件: MemoryMap.cs 项目: griderd/gsvm
        public T[] FindEncompassingRanges(SmartPointer ptr)
        {
            List <T> ranges = new List <T>();

            T[] keys = map.Keys.ToArray();

            for (int i = 0; i < keys.Length; i++)
            {
                T            t = keys[i];
                SmartPointer p = map[t];

                if (ptr.Overlaps(p))
                {
                    ranges.Add(t);
                }
            }

            return(ranges.ToArray());
        }