DisassembleInstruction() public method

public DisassembleInstruction ( System.Text.StringBuilder buf, int ip ) : int
buf System.Text.StringBuilder
ip int
return int
示例#1
0
        protected virtual void Trace(TemplateFrame frame, int ip)
        {
            Template self = frame.Template;
            StringBuilder tr = new StringBuilder();
            BytecodeDisassembler dis = new BytecodeDisassembler(self.impl);
            StringBuilder buf = new StringBuilder();
            dis.DisassembleInstruction(buf, ip);
            string name = self.impl.Name + ":";
            if (object.ReferenceEquals(self.impl.Name, Template.UnknownName))
                name = string.Empty;

            tr.Append(string.Format("{0,-40}", name + buf));
            tr.Append("\tstack=[");
            for (int i = 0; i <= sp; i++)
            {
                object o = operands[i];
                PrintForTrace(tr, frame, o);
            }

            tr.Append(" ], calls=");
            tr.Append(frame.GetEnclosingInstanceStackString());
            tr.Append(", sp=" + sp + ", nw=" + nwline);
            string s = tr.ToString();

            if (_debug)
                executeTrace.Add(s);

            if (trace)
                Console.WriteLine(s);
        }