pub struct DefaultMachine<Inner> { /* private fields */ }
Implementations§
Source§impl<Inner: SupportMachine> DefaultMachine<Inner>
impl<Inner: SupportMachine> DefaultMachine<Inner>
pub fn load_program( &mut self, program: &Bytes, args: impl ExactSizeIterator<Item = Result<Bytes, Error>>, ) -> Result<u64, Error>
pub fn load_program_with_metadata( &mut self, program: &Bytes, metadata: &ProgramMetadata, args: impl ExactSizeIterator<Item = Result<Bytes, Error>>, ) -> Result<u64, Error>
pub fn take_inner(self) -> Inner
pub fn pause(&self) -> Pause
pub fn set_pause(&mut self, pause: Pause)
pub fn exit_code(&self) -> i8
pub fn instruction_cycle_func(&self) -> &InstructionCycleFunc
pub fn inner_mut(&mut self) -> &mut Inner
pub fn run(&mut self) -> Result<i8, Error>
pub fn step(&mut self, decoder: &mut Decoder) -> Result<(), Error>
Trait Implementations§
Source§impl<Inner: CoreMachine> CoreMachine for DefaultMachine<Inner>
impl<Inner: CoreMachine> CoreMachine for DefaultMachine<Inner>
type REG = <Inner as CoreMachine>::REG
type MEM = <Inner as CoreMachine>::MEM
fn pc(&self) -> &Self::REG
fn update_pc(&mut self, pc: Self::REG)
fn commit_pc(&mut self)
fn memory(&self) -> &Self::MEM
fn memory_mut(&mut self) -> &mut Self::MEM
fn registers(&self) -> &[Self::REG]
fn set_register(&mut self, idx: usize, value: Self::REG)
fn isa(&self) -> u8
fn version(&self) -> u32
Source§impl<Inner: SupportMachine> DefaultMachineRunner for DefaultMachine<Inner>
impl<Inner: SupportMachine> DefaultMachineRunner for DefaultMachine<Inner>
type Inner = Inner
Source§fn new(machine: DefaultMachine<Inner>) -> Self
fn new(machine: DefaultMachine<Inner>) -> Self
Creates a new runner
Source§fn machine(&self) -> &DefaultMachine<Inner>
fn machine(&self) -> &DefaultMachine<Inner>
Fetches DefaultMachine
Source§fn machine_mut(&mut self) -> &mut DefaultMachine<Inner>
fn machine_mut(&mut self) -> &mut DefaultMachine<Inner>
Fetches mutable DefaultMachine
Source§fn inner_mut(&mut self) -> &mut Self::Inner
fn inner_mut(&mut self) -> &mut Self::Inner
Fetches the inner SupportMachine for more processing
Source§fn load_program(
&mut self,
program: &Bytes,
args: impl ExactSizeIterator<Item = Result<Bytes, Error>>,
) -> Result<u64, Error>
fn load_program( &mut self, program: &Bytes, args: impl ExactSizeIterator<Item = Result<Bytes, Error>>, ) -> Result<u64, Error>
Loads program
Source§fn load_program_with_metadata(
&mut self,
program: &Bytes,
metadata: &ProgramMetadata,
args: impl ExactSizeIterator<Item = Result<Bytes, Error>>,
) -> Result<u64, Error>
fn load_program_with_metadata( &mut self, program: &Bytes, metadata: &ProgramMetadata, args: impl ExactSizeIterator<Item = Result<Bytes, Error>>, ) -> Result<u64, Error>
Loads program with lazy loading metadata
Source§impl<Inner: CoreMachine> Display for DefaultMachine<Inner>
impl<Inner: CoreMachine> Display for DefaultMachine<Inner>
Source§impl<Inner: SupportMachine> Machine for DefaultMachine<Inner>
impl<Inner: SupportMachine> Machine for DefaultMachine<Inner>
Source§impl<Inner: SupportMachine> SupportMachine for DefaultMachine<Inner>
impl<Inner: SupportMachine> SupportMachine for DefaultMachine<Inner>
Source§fn new_with_memory(
_isa: u8,
_version: u32,
_max_cycles: u64,
_memory_size: usize,
) -> Self
fn new_with_memory( _isa: u8, _version: u32, _max_cycles: u64, _memory_size: usize, ) -> Self
Instantiation function
fn cycles(&self) -> u64
fn set_cycles(&mut self, cycles: u64)
fn max_cycles(&self) -> u64
fn set_max_cycles(&mut self, max_cycles: u64)
fn reset(&mut self, max_cycles: u64)
fn reset_signal(&mut self) -> bool
fn running(&self) -> bool
fn set_running(&mut self, running: bool)
fn load_binary( &mut self, program: &Bytes, metadata: &ProgramMetadata, update_pc: bool, ) -> Result<u64, Error>
fn load_elf(&mut self, program: &Bytes, update_pc: bool) -> Result<u64, Error>
Source§fn new(isa: u8, version: u32, max_cycles: u64) -> Selfwhere
Self: Sized,
fn new(isa: u8, version: u32, max_cycles: u64) -> Selfwhere
Self: Sized,
Instantiate using default memory size
fn add_cycles(&mut self, cycles: u64) -> Result<(), Error>
fn add_cycles_no_checking(&mut self, cycles: u64) -> Result<(), Error>
fn load_elf_inner( &mut self, program: &Bytes, update_pc: bool, ) -> Result<u64, Error>
fn load_binary_inner( &mut self, program: &Bytes, metadata: &ProgramMetadata, update_pc: bool, ) -> Result<u64, Error>
fn initialize_stack( &mut self, args: impl ExactSizeIterator<Item = Result<Bytes, Error>>, stack_start: u64, stack_size: u64, ) -> Result<u64, Error>
Auto Trait Implementations§
impl<Inner> Freeze for DefaultMachine<Inner>where
Inner: Freeze,
impl<Inner> !RefUnwindSafe for DefaultMachine<Inner>
impl<Inner> Send for DefaultMachine<Inner>where
Inner: Send,
impl<Inner> !Sync for DefaultMachine<Inner>
impl<Inner> Unpin for DefaultMachine<Inner>where
Inner: Unpin,
impl<Inner> !UnwindSafe for DefaultMachine<Inner>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more