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(')'); } } }
public static void WriteOffsetReference(ITextOutput writer, Instruction instruction) { writer.WriteReference(CecilExtensions.OffsetToString(instruction.Offset), instruction); }