GetSimpleSymbols() protected method

protected GetSimpleSymbols ( ) : ArrayList
return System.Collections.ArrayList
示例#1
0
            public Symbol SimpleLookup(TargetAddress address, bool exact_match)
            {
                if (bfd.IsContinuous &&
                    ((address < bfd.StartAddress) || (address >= bfd.EndAddress)))
                {
                    return(null);
                }

                if (list == null)
                {
                    ArrayList the_list = bfd.GetSimpleSymbols();
                    the_list.Sort();

                    list = new Symbol [the_list.Count];
                    the_list.CopyTo(list);
                }

                for (int i = list.Length - 1; i >= 0; i--)
                {
                    Symbol entry = list [i];

                    if (address < entry.Address)
                    {
                        continue;
                    }

                    long offset = address - entry.Address;
                    if (offset == 0)
                    {
                        while (i > 0)
                        {
                            Symbol n_entry = list [--i];

                            if (n_entry.Address == entry.Address)
                            {
                                entry = n_entry;
                            }
                            else
                            {
                                break;
                            }
                        }

                        return(new Symbol(entry.Name, address, 0));
                    }
                    else if (exact_match)
                    {
                        return(null);
                    }
                    else
                    {
                        return(new Symbol(
                                   entry.Name, address - offset,
                                   (int)offset));
                    }
                }

                return(null);
            }