public string Generate(CodeFrame frame) { var gen = new EilGenerator(frame); gen.OmitOffsets = !PrintOffsets; gen.IgnoreDebugInfo = IgnoreDebugInfo; return gen.Generate(); }
public string Generate(CodeFrame frame) { var gen = new EilGenerator(frame); gen.OmitOffsets = !PrintOffsets; gen.IgnoreDebugInfo = IgnoreDebugInfo; return(gen.Generate()); }
private static int Execute(CodeAssembly asm, bool interactive) { var mod = asm.GetRootModule(); if (opt.ShowEil) { var gen = new EilGenerator(mod); Console.WriteLine("EIL ({0}-{1}):", lastOffset, mod.Ops.Count - 1); Console.Write(gen.Generate(lastOffset)); lastOffset = mod.Ops.Count; } else if (opt.ShowSymbols != SymTables.None) { var gen = new DebugReader(mod.Symbols); helper.PrintSymTables(gen); lastOffset = mod.Ops.Count; } else { try { if (vm == null) { vm = new ElaMachine(asm); vm.AddTracePointListener(new TracePointListener()); } else { vm.RefreshState(); vm.Recover(); } if (opt.ShowTime != 0 && !interactive) { Warmup(asm); //GIT } var os = lastOffset; lastOffset = mod.Ops.Count; var sw = new Stopwatch(); sw.Start(); var exer = default(ExecutionResult); if (opt.ShowTime != 0) { for (var i = 0; i < opt.ShowTime; i++) { exer = vm.Run(os); } sw.Stop(); } else { exer = vm.Run(os); } if (opt.ShowTime != 0 && !interactive) { Console.WriteLine("Executed: {0} time(s). Execution time: {1}", opt.ShowTime, sw.Elapsed); } if (exer.ReturnValue.TypeCode != ElaTypeCode.None && exer.ReturnValue.TypeCode != ElaTypeCode.Unit) { Console.WriteLine(vm.PrintValue(exer.ReturnValue)); } } catch (ElaException ex) { helper.PrintError(ex.ToString()); return(R_ERR); } } return(R_OK); }
private static int Execute(CodeAssembly asm, bool interactive) { var mod = asm.GetRootModule(); if (opt.ShowEil) { var gen = new EilGenerator(mod); Console.WriteLine("EIL ({0}-{1}):", lastOffset, mod.Ops.Count - 1); Console.Write(gen.Generate(lastOffset)); lastOffset = mod.Ops.Count; } else if (opt.ShowSymbols != SymTables.None) { var gen = new DebugReader(mod.Symbols); helper.PrintSymTables(gen); lastOffset = mod.Ops.Count; } else { try { if (vm == null) vm = new ElaMachine(asm); else { vm.RefreshState(); vm.Recover(); } if (opt.ShowTime && !interactive) Warmup(asm); //GIT var os = lastOffset; lastOffset = mod.Ops.Count; var sw = new Stopwatch(); sw.Start(); var exer = vm.Run(os); sw.Stop(); if (opt.ShowTime && !interactive) Console.WriteLine("Execution time: {0}", sw.Elapsed); if (exer.ReturnValue.TypeCode != ElaTypeCode.None && exer.ReturnValue.TypeCode != ElaTypeCode.Unit) Console.WriteLine(vm.PrintValue(exer.ReturnValue)); } catch (ElaException ex) { helper.PrintError(ex.ToString()); return R_ERR; } } return R_OK; }