Esempio n. 1
0
 public static void WriteTo(this Instruction instruction, ITextOutput writer)
 {
     writer.WriteDefinition(CecilExtensions.OffsetToString(instruction.Offset), instruction);
     writer.Write(": ");
     writer.WriteReference(instruction.OpCode.Name, instruction.OpCode);
     if (instruction.Operand != null)
     {
         writer.Write(' ');
         if (instruction.OpCode == OpCodes.Ldtoken)
         {
             if (instruction.Operand is MethodReference)
             {
                 writer.Write("method ");
             }
             else if (instruction.Operand is FieldReference)
             {
                 writer.Write("field ");
             }
         }
         WriteOperand(writer, instruction.Operand);
     }
 }
 public void WriteTo(TextWriter writer)
 {
     foreach (Instruction prefix in this.Prefixes)
     {
         Disassembler.DisassemblerHelpers.WriteTo(prefix, new PlainTextOutput(writer));
         writer.WriteLine();
     }
     if (Instruction != null && Instruction.Offset >= 0)
     {
         writer.Write(CecilExtensions.OffsetToString(Instruction.Offset));
         writer.Write(": ");
     }
     if (Target != null)
     {
         writer.Write(Target.ToString());
         writer.Write(" = ");
     }
     if (IsMoveInstruction)
     {
         writer.Write(Operands[0].ToString());
         if (Instruction != null)
         {
             writer.Write(" (" + Instruction.OpCode.Name + ")");
         }
     }
     else
     {
         if (Instruction == null)
         {
             writer.Write(SpecialOpCode.ToString());
         }
         else
         {
             writer.Write(Instruction.OpCode.Name);
             if (null != Instruction.Operand)
             {
                 writer.Write(' ');
                 Disassembler.DisassemblerHelpers.WriteOperand(new PlainTextOutput(writer), Instruction.Operand);
                 writer.Write(' ');
             }
         }
         if (TypeOperand != null)
         {
             writer.Write(' ');
             writer.Write(TypeOperand.ToString());
             writer.Write(' ');
         }
         if (Operands.Length > 0)
         {
             writer.Write('(');
             for (int i = 0; i < Operands.Length; i++)
             {
                 if (i > 0)
                 {
                     writer.Write(", ");
                 }
                 writer.Write(Operands[i].ToString());
             }
             writer.Write(')');
         }
     }
 }
Esempio n. 3
0
 public static void WriteOffsetReference(ITextOutput writer, Instruction instruction)
 {
     writer.WriteReference(CecilExtensions.OffsetToString(instruction.Offset), instruction);
 }