public static int GetAutoEncodedSize(this Instruction Instruction, int bitness, ulong IP = 0) { var Writer = new MemoryCodeWriter(); var Compiler = Encoder.Create(bitness, Writer); return((int)Compiler.AutoEncode(Instruction, (ulong)Writer.Count + IP)); }
public static int GetAutoEncodedSize(this InstructionList List, int bitness, ulong IP = 0) { var Writer = new MemoryCodeWriter(); var Compiler = Encoder.Create(bitness, Writer); foreach (var Instruction in List) { Compiler.AutoEncode(Instruction, (ulong)Writer.Count + IP); } return(Writer.Count); }
public unsafe static InstructionList AssembleToList(this Assembler Assembler, ulong RIP) { var CWBuffer = new MemoryCodeWriter(); Assembler.Assemble(CWBuffer, RIP); var Buffer = CWBuffer.ToArray(); fixed(void *pBuffer = &Buffer[0]) { using (var Reader = new MemoryCodeReader(pBuffer, (uint)Buffer.Length)) { var AsmDecoder = Decoder.Create(Assembler.Bitness, Reader); return(AsmDecoder.DecodeAmount((uint)Assembler.Instructions.Count)); } } }