Пример #1
0
        public Collection <DataItemNode> GetDataItemNodes()
        {
            var          nodes = new Collection <DataItemNode>();
            Procedure    curProc;
            DataItemNode curNode = null;

            foreach (var item in imageMap.Items.Values)
            {
                int numLines;
                var startAddr = item.Address;
                var endAddr   = item.Address + item.Size;
                if (item is ImageMapBlock bi)
                {
                    numLines = CountDisassembledLines(bi);
                    curProc  = bi.Block.Procedure;
                }
                else
                {
                    numLines = CountMemoryLines(item);
                    curProc  = null;
                }

                if (curNode == null || curNode.Proc != curProc || curProc == null)
                {
                    curNode = new DataItemNode(curProc, numLines)
                    {
                        StartAddress = startAddr,
                        EndAddress   = endAddr
                    };
                    nodes.Add(curNode);
                }
                else
                {
                    curNode.NumLines  += numLines;
                    curNode.EndAddress = endAddr;
                }
            }

            return(nodes);
        }
Пример #2
0
        public Collection<DataItemNode> GetDataItemNodes()
        {
            var nodes = new Collection<DataItemNode>();
            Procedure curProc = null;
            DataItemNode curNode = null;

            foreach (var item in program.ImageMap.Items.Values)
            {
                int numLines;
                var startAddr = item.Address;
                var endAddr = item.Address + item.Size;
                var bi = item as ImageMapBlock;
                if (bi != null)
                {
                    numLines = CountDisassembledLines(bi);
                    curProc = bi.Block.Procedure;
                }
                else
                {
                    numLines = CountMemoryLines(item);
                    curProc = null;
                }

                if (curNode == null || curNode.Proc != curProc || curProc == null)
                {
                    curNode = new DataItemNode(curProc, numLines);
                    curNode.StartAddress = startAddr;
                    curNode.EndAddress = endAddr;
                    nodes.Add(curNode);
                }
                else
                {
                    curNode.NumLines += numLines;
                    curNode.EndAddress = endAddr;
                }
            }

            return nodes;
        }