Skip to main content

Memory

Trait Memory 

Source
pub trait Memory {
    type REG: Register;

Show 23 methods // Required methods fn new() -> Self; fn new_with_memory(memory_size: usize) -> Self; fn init_pages( &mut self, addr: u64, size: u64, flags: u8, source: Option<Bytes>, offset_from_addr: u64, ) -> Result<(), Error>; fn fetch_flag(&mut self, page: u64) -> Result<u8, Error>; fn set_flag(&mut self, page: u64, flag: u8) -> Result<(), Error>; fn clear_flag(&mut self, page: u64, flag: u8) -> Result<(), Error>; fn memory_size(&self) -> usize; fn store_byte( &mut self, addr: u64, size: u64, value: u8, ) -> Result<(), Error>; fn store_bytes(&mut self, addr: u64, value: &[u8]) -> Result<(), Error>; fn load_bytes(&mut self, addr: u64, size: u64) -> Result<Bytes, Error>; fn execute_load16(&mut self, addr: u64) -> Result<u16, Error>; fn execute_load32(&mut self, addr: u64) -> Result<u32, Error>; fn load8(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>; fn load16(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>; fn load32(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>; fn load64(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>; fn store8( &mut self, addr: &Self::REG, value: &Self::REG, ) -> Result<(), Error>; fn store16( &mut self, addr: &Self::REG, value: &Self::REG, ) -> Result<(), Error>; fn store32( &mut self, addr: &Self::REG, value: &Self::REG, ) -> Result<(), Error>; fn store64( &mut self, addr: &Self::REG, value: &Self::REG, ) -> Result<(), Error>; fn lr(&self) -> &Self::REG; fn set_lr(&mut self, value: &Self::REG); // Provided method fn memory_pages(&self) -> usize { ... }
}

Required Associated Types§

Required Methods§

Source

fn new() -> Self

Source

fn new_with_memory(memory_size: usize) -> Self

Source

fn init_pages( &mut self, addr: u64, size: u64, flags: u8, source: Option<Bytes>, offset_from_addr: u64, ) -> Result<(), Error>

Source

fn fetch_flag(&mut self, page: u64) -> Result<u8, Error>

Source

fn set_flag(&mut self, page: u64, flag: u8) -> Result<(), Error>

Source

fn clear_flag(&mut self, page: u64, flag: u8) -> Result<(), Error>

Source

fn memory_size(&self) -> usize

Source

fn store_byte(&mut self, addr: u64, size: u64, value: u8) -> Result<(), Error>

Source

fn store_bytes(&mut self, addr: u64, value: &[u8]) -> Result<(), Error>

Source

fn load_bytes(&mut self, addr: u64, size: u64) -> Result<Bytes, Error>

Source

fn execute_load16(&mut self, addr: u64) -> Result<u16, Error>

Source

fn execute_load32(&mut self, addr: u64) -> Result<u32, Error>

Source

fn load8(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>

Source

fn load16(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>

Source

fn load32(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>

Source

fn load64(&mut self, addr: &Self::REG) -> Result<Self::REG, Error>

Source

fn store8(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error>

Source

fn store16(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error>

Source

fn store32(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error>

Source

fn store64(&mut self, addr: &Self::REG, value: &Self::REG) -> Result<(), Error>

Source

fn lr(&self) -> &Self::REG

Source

fn set_lr(&mut self, value: &Self::REG)

Provided Methods§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl<M: Memory> Memory for WXorXMemory<M>

Source§

type REG = <M as Memory>::REG

Source§

impl<R: Register> Memory for FlatMemory<R>

A flat chunk of memory used for RISC-V machine, it lacks all the permission checking logic.

Source§

type REG = R

Source§

impl<R: Register> Memory for SparseMemory<R>

Source§

type REG = R