Example #1
0
 public void GetLineSegment(out SourceFileSegment segment, IntPtr pc)
 {
     if (scriptLanguage == null || scriptLanguage.SourceFileSegments == null)
     {
         segment = new SourceFileSegment(0, IntPtr.Zero, null, new FunctionRef());
     }
     else
     {
         scriptLanguage.SourceFileSegments.TryGetValue(pc, out segment);
     }
 }
        public static void AppendDissassembly(StringBuilder sb, out int hiStart, out int hiEnd, AssemblySection section, SourceFileSegment segment, SourceModule module, ref int lineCount)
        {
            sb.AppendLine();
            sb.AppendLine(section.FunctionName);
            sb.AppendLine();

            hiStart = 0;
            hiEnd   = 0;

            foreach (var s in section.Segments)
            {
                if (section.FunctionName == segment.Function.Name && lineCount == segment.LineNumber)
                {
                    hiStart = sb.Length;
                    hiEnd   = hiStart + s.Length;
                }

                sb.AppendLine(s);

                if (section.FunctionName == segment.Function.Name)
                {
                    lineCount++;
                }
            }
        }
        public static void AppendDissassembly(StringBuilder sb, out int hiStart, out int hiEnd, SourceModule module, SourceFileSegment segment)
        {
            hiStart = 0;
            hiEnd   = 0;
            int lineCount = 0;

            if (module == null)
            {
                return;
            }

            sb.Append("Disassembly of ");
            sb.AppendLine(module.Name);
            sb.AppendLine();

            foreach (var section in module.Sections)
            {
                int sectionHiStart, sectionHiEnd;
                AppendDissassembly(sb, out sectionHiStart, out sectionHiEnd, section, segment, module, ref lineCount);
                if (sectionHiEnd > sectionHiStart)
                {
                    hiStart = sectionHiStart;
                    hiEnd   = sectionHiEnd;
                }
            }
        }