pub trait Vm {
Show 20 methods
// Required methods
fn get_register(&self, reg: usize) -> u64;
fn set_register(&mut self, reg: usize, value: u64);
fn get_pc(&self) -> usize;
fn set_pc(&mut self, pc: usize);
fn read_u8(&self, addr: u64) -> ExecutionResult<u8>;
fn read_u16(&self, addr: u64) -> ExecutionResult<u16>;
fn read_u32(&self, addr: u64) -> ExecutionResult<u32>;
fn read_u64(&self, addr: u64) -> ExecutionResult<u64>;
fn write_u8(&mut self, addr: u64, value: u8) -> ExecutionResult<()>;
fn write_u16(&mut self, addr: u64, value: u16) -> ExecutionResult<()>;
fn write_u32(&mut self, addr: u64, value: u32) -> ExecutionResult<()>;
fn write_u64(&mut self, addr: u64, value: u64) -> ExecutionResult<()>;
fn get_call_depth(&self) -> usize;
fn max_call_depth(&self) -> usize;
fn push_frame(
&mut self,
return_pc: usize,
saved_registers: [u64; 4],
saved_frame_pointer: u64,
) -> ExecutionResult<()>;
fn pop_frame(&mut self) -> Option<(usize, [u64; 4], u64)>;
fn halt(&mut self, exit_code: u64);
fn get_stack_frame_size(&self) -> u64;
fn handle_syscall(&mut self, name: &str) -> ExecutionResult<u64>;
// Provided method
fn advance_pc(&mut self) { ... }
}Required Methods§
fn get_register(&self, reg: usize) -> u64
fn set_register(&mut self, reg: usize, value: u64)
fn get_pc(&self) -> usize
fn set_pc(&mut self, pc: usize)
fn read_u8(&self, addr: u64) -> ExecutionResult<u8>
fn read_u16(&self, addr: u64) -> ExecutionResult<u16>
fn read_u32(&self, addr: u64) -> ExecutionResult<u32>
fn read_u64(&self, addr: u64) -> ExecutionResult<u64>
fn write_u8(&mut self, addr: u64, value: u8) -> ExecutionResult<()>
fn write_u16(&mut self, addr: u64, value: u16) -> ExecutionResult<()>
fn write_u32(&mut self, addr: u64, value: u32) -> ExecutionResult<()>
fn write_u64(&mut self, addr: u64, value: u64) -> ExecutionResult<()>
fn get_call_depth(&self) -> usize
fn max_call_depth(&self) -> usize
fn push_frame( &mut self, return_pc: usize, saved_registers: [u64; 4], saved_frame_pointer: u64, ) -> ExecutionResult<()>
fn pop_frame(&mut self) -> Option<(usize, [u64; 4], u64)>
fn halt(&mut self, exit_code: u64)
fn get_stack_frame_size(&self) -> u64
fn handle_syscall(&mut self, name: &str) -> ExecutionResult<u64>
Provided Methods§
fn advance_pc(&mut self)
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".