void RegisterVariables() { _variableResolver.Register("AppName", () => System.IO.Path.GetFileNameWithoutExtension(ProgramHostPath)); _variableResolver.Register("AppFolder", () => System.IO.Path.GetDirectoryName(ProgramHostPath)); _variableResolver.Register("Win3muFolder", () => { if (System.Reflection.Assembly.GetExecutingAssembly() != null) { return(System.IO.Path.GetDirectoryName(typeof(Machine).Assembly.Location)); } return(null); }); _variableResolver.Register("ax", () => ax.ToString("X4")); _variableResolver.Register("bx", () => bx.ToString("X4")); _variableResolver.Register("cx", () => cx.ToString("X4")); _variableResolver.Register("dx", () => dx.ToString("X4")); _variableResolver.Register("si", () => si.ToString("X4")); _variableResolver.Register("di", () => di.ToString("X4")); _variableResolver.Register("sp", () => sp.ToString("X4")); _variableResolver.Register("bp", () => bp.ToString("X4")); _variableResolver.Register("ip", () => ip.ToString("X4")); _variableResolver.Register("cs", () => cs.ToString("X4")); _variableResolver.Register("es", () => es.ToString("X4")); _variableResolver.Register("ds", () => ds.ToString("X4")); _variableResolver.Register("ss", () => ss.ToString("X4")); _variableResolver.Register("eflags", () => EFlags.ToString("X4")); _variableResolver.Register("al", () => al.ToString("X2")); _variableResolver.Register("ah", () => ah.ToString("X2")); _variableResolver.Register("bl", () => bl.ToString("X2")); _variableResolver.Register("bh", () => bh.ToString("X2")); _variableResolver.Register("cl", () => cl.ToString("X2")); _variableResolver.Register("ch", () => ch.ToString("X2")); _variableResolver.Register("dl", () => dl.ToString("X2")); _variableResolver.Register("dh", () => dh.ToString("X2")); _variableResolver.Register("asm", () => { if (_disassembled == null) { _disassembled = _disassembler.Read(cs, ip); } return(_disassembled); }); _variableResolver.Register("annotations", () => { if (_disassembled == null) { _disassembled = _disassembler.Read(cs, ip); } return(_expressionContext.GenerateDisassemblyAnnotations(_disassembled, _disassembler.ImplicitParams)); }); _variableResolver.Register("cputime", () => CpuTime.ToString()); }
public override bool TryGetMember(GetMemberBinder binder, out object result) { if (m_probes.TryGetValue(binder.Name, out CpuTime x)) { result = x.Timer; } else { x = new CpuTime(); m_probes[binder.Name] = x; Register(binder.Name, x); s_registrationActions.ForEach(a => a(binder.Name, x)); result = x.Timer; } return(true); }
public CpuTime getCpuTimeDiff(CpuTime c1, CpuTime c2) { return(new CpuTime(c2.utime - c1.utime, c2.stime - c1.stime, c2.cutime - c1.cutime, c2.cstime - c1.cstime)); }