Ejemplo n.º 1
0
        public Symbol Parse(string aLine, SymbolCollection aCollection)
        {
            Symbol ret = null;
            //
            BasicSymbol basicSymbol = Parse(aLine);

            if (basicSymbol != null)
            {
                uint baseAddress   = aCollection.BaseAddress;
                uint offsetAddress = basicSymbol.iAddress - baseAddress;
                if (basicSymbol.iAddress < baseAddress)
                {
                    ret = null;
                }
                else
                {
                    ret = Symbol.New(aCollection);
                    //
                    ret.OffsetAddress = offsetAddress;
                    ret.Size          = basicSymbol.iSize;
                    ret.Name          = basicSymbol.iName;
                    ret.Object        = basicSymbol.iObject;

                    // Make sure it's tagged as coming from a symbol file
                    ret.Source = TSymbolSource.ESourceWasSymbolFile;
                }
            }
            //
            return(ret);
        }
Ejemplo n.º 2
0
        public static BasicSymbol Parse(string aLine)
        {
            BasicSymbol ret = null;
            //
            Match m = KSimpleSymbolRegEx.Match(aLine);

            if (m.Success)
            {
                BasicSymbol symbol = new BasicSymbol();

                symbol.iAddress = uint.Parse(m.Groups["Address"].Value, System.Globalization.NumberStyles.HexNumber);
                symbol.iSize    = uint.Parse(m.Groups["Size"].Value, System.Globalization.NumberStyles.HexNumber);

                string symbolAndObject = m.Groups["SymbolAndObject"].Value;
                ParseSymbolText(symbolAndObject, out symbol.iName, out symbol.iObject);

                ret = symbol;
            }
            //
            return(ret);
        }