Example #1
0
        public string EmitFlagGroup(IProcessorArchitecture arch, string caption, uint grfFlags)
        {
            StringWriter sw = new StringWriter();

            EmitFlagGroup(arch, caption, grfFlags, sw);
            return(sw.ToString());
        }
Example #2
0
        public string EmitRegisters(IProcessorArchitecture arch, string caption, BitSet regs)
        {
            StringWriter sw = new StringWriter();

            EmitRegisters(arch, caption, regs, sw);
            return(sw.ToString());
        }
Example #3
0
 public static void EmitRegisters(IProcessorArchitecture arch, string caption, uint grfFlags, BitSet regs, TextWriter sb)
 {
     sb.Write(caption);
     if (grfFlags != 0)
     {
         sb.Write(" {0}", arch.GrfToString(grfFlags));
     }
     EmitRegistersCore(arch, regs, sb);
 }
Example #4
0
 /// <summary>
 /// Writes flow state that is true on exit from the basic block.
 /// </summary>
 /// <param name="arch"></param>
 /// <param name="writer"></param>
 public void WriteAfter(IProcessorArchitecture arch, TextWriter writer)
 {
     EmitRegisters(arch, "// DataOut:", DataOut, writer);
     writer.WriteLine();
     EmitFlagGroup(arch, "// DataOut (flags):", grfOut, writer);
     writer.WriteLine();
     EmitLocals("// LocalsOut:", writer);
     if (TerminatesProcess)
         writer.WriteLine("// Terminates process");
 }
Example #5
0
 public override void Emit(IProcessorArchitecture arch, TextWriter writer)
 {
     EmitRegisters(arch, "// DataOut:", DataOut, writer);
     writer.WriteLine();
     EmitFlagGroup(arch, "// DataOut (flags):", grfOut, writer);
     writer.WriteLine();
     SymbolicIn.Emit(arch, "// SymbolicIn:", writer);
     writer.WriteLine();
     EmitLocals("// LocalsOut:", writer);
     if (TerminatesProcess)
         writer.WriteLine("// Terminates process");
 }
Example #6
0
 /// <summary>
 /// Writes flow state that is true on exit from the basic block.
 /// </summary>
 /// <param name="arch"></param>
 /// <param name="writer"></param>
 public void WriteAfter(IProcessorArchitecture arch, TextWriter writer)
 {
     EmitRegisters(arch, "// DataOut:", DataOut, writer);
     writer.WriteLine();
     EmitFlagGroup(arch, "// DataOut (flags):", grfOut, writer);
     writer.WriteLine();
     EmitLocals("// LocalsOut:", writer);
     if (TerminatesProcess)
     {
         writer.WriteLine("// Terminates process");
     }
 }
Example #7
0
 public override void Emit(IProcessorArchitecture arch, TextWriter writer)
 {
     EmitRegisters(arch, "// DataOut:", DataOut, writer);
     writer.WriteLine();
     EmitFlagGroup(arch, "// DataOut (flags):", grfOut, writer);
     writer.WriteLine();
     SymbolicIn.Emit(arch, "// SymbolicIn:", writer);
     writer.WriteLine();
     EmitLocals("// LocalsOut:", writer);
     if (TerminatesProcess)
     {
         writer.WriteLine("// Terminates process");
     }
 }
Example #8
0
 private static void EmitRegistersCore(IProcessorArchitecture arch, BitSet regs, TextWriter sb)
 {
     if (regs != null && !regs.IsEmpty)
     {
         for (int i = 0; i < regs.Count; ++i)
         {
             if (regs[i])
             {
                 var r = arch.GetRegister(i);
                 if (r != null && r.IsAluRegister)
                 {
                     sb.Write(" ");
                     sb.Write(r.Name);
                 }
             }
         }
     }
 }
Example #9
0
 public void EmitFlagGroup(IProcessorArchitecture arch, string caption, uint grfFlags, TextWriter sb)
 {
     sb.Write(caption);
     sb.Write(" {0}", arch.GrfToString(grfFlags));
 }
Example #10
0
 public static void EmitRegisters(IProcessorArchitecture arch, string caption, BitSet regs, TextWriter sb)
 {
     sb.Write(caption);
     EmitRegistersCore(arch, regs, sb);
 }
Example #11
0
 /// <summary>
 /// Displays the dataflow object as a human-readable stream of text.
 /// </summary>
 /// <param name="arch">current processor architecture (to interpret registers)</param>
 /// <param name="sb">stream into which the data is written</param>
 public abstract void Emit(IProcessorArchitecture arch, TextWriter sb);
Example #12
0
 /// <summary>
 /// Writes flow state that is true on entry to the basic block.
 /// </summary>
 /// <param name="arch"></param>
 /// <param name="writer"></param>
 public void WriteBefore(IProcessorArchitecture arch, TextWriter writer)
 {
     SymbolicIn.Emit(arch, "// SymbolicIn:", writer);
     writer.WriteLine();
 }
Example #13
0
 /// <summary>
 /// Writes flow state that is true on entry to the basic block.
 /// </summary>
 /// <param name="arch"></param>
 /// <param name="writer"></param>
 public void WriteBefore(IProcessorArchitecture arch, TextWriter writer)
 {
     SymbolicIn.Emit(arch, "// SymbolicIn:", writer);
     writer.WriteLine();
 }