public string EmitFlagGroup(IProcessorArchitecture arch, string caption, uint grfFlags) { StringWriter sw = new StringWriter(); EmitFlagGroup(arch, caption, grfFlags, sw); return(sw.ToString()); }
public string EmitRegisters(IProcessorArchitecture arch, string caption, BitSet regs) { StringWriter sw = new StringWriter(); EmitRegisters(arch, caption, regs, sw); return(sw.ToString()); }
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); }
/// <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"); }
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"); }
/// <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"); } }
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"); } }
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); } } } } }
public void EmitFlagGroup(IProcessorArchitecture arch, string caption, uint grfFlags, TextWriter sb) { sb.Write(caption); sb.Write(" {0}", arch.GrfToString(grfFlags)); }
public static void EmitRegisters(IProcessorArchitecture arch, string caption, BitSet regs, TextWriter sb) { sb.Write(caption); EmitRegistersCore(arch, regs, sb); }
/// <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);
/// <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(); }