Beispiel #1
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     if (options.UseFieldSugar)
     {
         if (this.MatchStFld(out var target, out var field, out var value))
         {
             ILRange.WriteTo(output, options);
             output.Write("stfld ");
             Disassembler.DisassemblerHelpers.WriteOperand(output, field);
             output.Write('(');
             target.WriteTo(output, options);
             output.Write(", ");
             value.WriteTo(output, options);
             output.Write(')');
             return;
         }
         else if (this.MatchStsFld(out field, out value))
         {
             ILRange.WriteTo(output, options);
             output.Write("stsfld ");
             Disassembler.DisassemblerHelpers.WriteOperand(output, field);
             output.Write('(');
             value.WriteTo(output, options);
             output.Write(')');
             return;
         }
     }
     OriginalWriteTo(output, options);
 }
Beispiel #2
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     if (options.UseFieldSugar)
     {
         if (this.MatchStFld(out var target, out var field, out var value))
         {
             WriteILRange(output, options);
             output.Write("stfld ");
             field.WriteTo(output);
             output.Write('(');
             target.WriteTo(output, options);
             output.Write(", ");
             value.WriteTo(output, options);
             output.Write(')');
             return;
         }
         else if (this.MatchStsFld(out field, out value))
         {
             WriteILRange(output, options);
             output.Write("stsfld ");
             field.WriteTo(output);
             output.Write('(');
             value.WriteTo(output, options);
             output.Write(')');
             return;
         }
     }
     OriginalWriteTo(output, options);
 }
Beispiel #3
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     output.Write(OpCode);
     if (!string.IsNullOrEmpty(Comment))
     {
         output.Write(" // " + Comment);
     }
 }
Beispiel #4
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     output.Write(OpCode);
     if (!string.IsNullOrEmpty(Message))
     {
         output.Write("(\"");
         output.Write(Message);
         output.Write("\")");
     }
 }
Beispiel #5
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     WriteILRange(output, options);
     output.Write(OpCode);
     if (Kind != NopKind.Normal)
     {
         output.Write("." + Kind.ToString().ToLowerInvariant());
     }
     if (!string.IsNullOrEmpty(Comment))
     {
         output.Write(" // " + Comment);
     }
 }
Beispiel #6
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     output.Write("using (");
     Variable.WriteTo(output);
     output.Write(" = ");
     ResourceExpression.WriteTo(output, options);
     output.WriteLine(") {");
     output.Indent();
     Body.WriteTo(output, options);
     output.Unindent();
     output.WriteLine();
     output.Write("}");
 }
Beispiel #7
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     output.Write("string.to.int (");
     Argument.WriteTo(output, options);
     output.Write(", { ");
     for (int i = 0; i < Map.Length; i++)
     {
         if (i > 0)
         {
             output.Write(", ");
         }
         output.Write($"[{i}] = \"{Map[i]}\"");
     }
     output.Write(" })");
 }
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     if (options.UseFieldSugar)
     {
         if (this.MatchLdFld(out var target, out var field))
         {
             output.Write("ldfld ");
             Disassembler.DisassemblerHelpers.WriteOperand(output, field);
             output.Write('(');
             target.WriteTo(output, options);
             output.Write(')');
             return;
         }
         else if (this.MatchLdsFld(out field))
         {
             output.Write("ldsfld ");
             Disassembler.DisassemblerHelpers.WriteOperand(output, field);
             return;
         }
     }
     OriginalWriteTo(output, options);
 }
Beispiel #9
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     WriteILRange(output, options);
     output.Write("using");
     if (IsAsync)
     {
         output.Write(".async");
     }
     if (IsRefStruct)
     {
         output.Write(".ref");
     }
     output.Write(" (");
     Variable.WriteTo(output);
     output.Write(" = ");
     ResourceExpression.WriteTo(output, options);
     output.WriteLine(") {");
     output.Indent();
     Body.WriteTo(output, options);
     output.Unindent();
     output.WriteLine();
     output.Write("}");
 }
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     if (options.UseFieldSugar)
     {
         if (this.MatchLdFld(out var target, out var field))
         {
             ILRange.WriteTo(output, options);
             output.Write("ldfld ");
             field.WriteTo(output);
             output.Write('(');
             target.WriteTo(output, options);
             output.Write(')');
             return;
         }
         else if (this.MatchLdsFld(out field))
         {
             ILRange.WriteTo(output, options);
             output.Write("ldsfld ");
             field.WriteTo(output);
             return;
         }
     }
     OriginalWriteTo(output, options);
 }
Beispiel #11
0
 public override void WriteTo(ITextOutput output, ILAstWritingOptions options)
 {
     WriteILRange(output, options);
     output.Write(OpCode);
     // the non-custom WriteTo would add useless parentheses
 }
Beispiel #12
0
        public static void WriteIlFunctionTo(ILFunction function, ITextOutput output, ILAstWritingOptions options, Func <ILInstruction, string> callback)
        {
            //output.Write(function.OpCode);
            output.Write(originalOpCodeNames[(int)function.OpCode]);
            if (function.Method != null)
            {
                output.Write(' ');

                //function.Method.WriteTo(output);
                if (function.Method is IMethod method && method.IsConstructor)
                {
                    output.WriteReference(function.Method, method.DeclaringType?.Name + "." + method.Name);
                }
                else
                {
                    output.WriteReference(function.Method, function.Method.Name);
                }
            }