public static PlainMemory CreateFrom(DataRef data) { var memory = new PlainMemory(data.Size); memory.CopyFrom(data, 0, data.Size, 0); return(memory); }
public static void Copy(DataRef src, DataRef dst) { if (src.Size != dst.Size) { throw new InvalidOperationException("Memory regions must have the same length."); } _ = vcpu_memcpy(dst.Pointer, src.Pointer, src.Size); }
public void CopyFrom(DataRef src, int srcOffset, int length, int destOffset) { if (srcOffset >= src.Size) { throw new ArgumentOutOfRangeException(nameof(srcOffset)); } var destSize = Data.Size; if (destOffset >= destSize) { throw new ArgumentOutOfRangeException(nameof(destOffset)); } if (srcOffset + length > src.Size || destOffset + length > destSize) { throw new ArgumentOutOfRangeException(nameof(length)); } Validation.ValidateResult(vcpu_memory_write(Inner, src.Pointer + srcOffset, destOffset, length)); }
public void Run(DataRef instructions, Memory memory) => Validation.ValidateResult(vcpu_processor_run(_inner, instructions.Pointer, instructions.Size, memory.Inner));