1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
use crate::MemoryLike; #[derive(Default)] pub struct MockedMemory {} impl MemoryLike for MockedMemory { fn fits_memory(&self, _offset: u64, _len: u64) -> bool { true } fn read_memory(&self, offset: u64, buffer: &mut [u8]) { let src = unsafe { std::slice::from_raw_parts(offset as *const u8, buffer.len() as usize) }; buffer.copy_from_slice(src); } fn read_memory_u8(&self, offset: u64) -> u8 { let offset = offset as *const u8; unsafe { *offset } } fn write_memory(&mut self, offset: u64, buffer: &[u8]) { let dest = unsafe { std::slice::from_raw_parts_mut(offset as *mut u8, buffer.len() as usize) }; dest.copy_from_slice(buffer); } }