pub struct InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError = CustomErrorPlaceholder>{
pub regs: Registers<Reg>,
pub ext_state: ExtState,
pub memory: Memory,
pub instruction_fetcher: IF,
pub system_instruction_handler: InstructionHandler,
pub custom_error: PhantomData<CustomError>,
}Expand description
Base interpreter state
Fields§
§regs: Registers<Reg>General purpose registers
ext_state: ExtStateExtended state.
Extensions might use this to place additional constraints on ExtState to require
additional registers or other resources. If no such extension is used, () can be used as
a placeholder.
memory: MemoryMemory
instruction_fetcher: IFInstruction fetcher
system_instruction_handler: InstructionHandlerSystem instruction handler
custom_error: PhantomData<CustomError>Custom error phantom data
Trait Implementations§
Source§impl<Reg, ExtState: Debug, Memory: Debug, IF: Debug, InstructionHandler: Debug, CustomError: Debug> Debug for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>
impl<Reg, ExtState: Debug, Memory: Debug, IF: Debug, InstructionHandler: Debug, CustomError: Debug> Debug for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32BInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32BInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32Instruction<Reg>where
Reg: Register<Type = u32>,
[(); Reg::N]:,
Memory: VirtualMemory,
PC: ProgramCounter<Reg::Type, Memory, CustomError>,
InstructionHandler: SystemInstructionHandler<Reg, Memory, PC, CustomError>,
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32Instruction<Reg>where
Reg: Register<Type = u32>,
[(); Reg::N]:,
Memory: VirtualMemory,
PC: ProgramCounter<Reg::Type, Memory, CustomError>,
InstructionHandler: SystemInstructionHandler<Reg, Memory, PC, CustomError>,
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32MInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32MInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbaInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbaInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbbInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbbInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbcInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbcInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbkcInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbkcInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbsInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZbsInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZknhInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZknhInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZmmulInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv32ZmmulInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64BInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64BInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64Instruction<Reg>where
Reg: Register<Type = u64>,
[(); Reg::N]:,
Memory: VirtualMemory,
PC: ProgramCounter<Reg::Type, Memory, CustomError>,
InstructionHandler: SystemInstructionHandler<Reg, Memory, PC, CustomError>,
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64Instruction<Reg>where
Reg: Register<Type = u64>,
[(); Reg::N]:,
Memory: VirtualMemory,
PC: ProgramCounter<Reg::Type, Memory, CustomError>,
InstructionHandler: SystemInstructionHandler<Reg, Memory, PC, CustomError>,
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64MInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64MInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbaInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbaInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbbInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbbInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbcInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbcInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbkcInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbkcInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbsInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZbsInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZknhInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZknhInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZmmulInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Rv64ZmmulInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for ZicsrInstruction<Reg>
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for ZicsrInstruction<Reg>
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
§impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Zve64xInstruction<Reg>where
Reg: Register,
[(); Reg::N]:,
ExtState: VectorRegistersExt<Reg, CustomError> + Csrs<Reg, CustomError>,
[(); { _ }]:,
PC: ProgramCounter<Reg::Type, Memory, CustomError>,
CustomError: Debug,
Memory: VirtualMemory,
impl<Reg, ExtState, Memory, PC, InstructionHandler, CustomError> ExecutableInstruction<InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, CustomError> for Zve64xInstruction<Reg>where
Reg: Register,
[(); Reg::N]:,
ExtState: VectorRegistersExt<Reg, CustomError> + Csrs<Reg, CustomError>,
[(); { _ }]:,
PC: ProgramCounter<Reg::Type, Memory, CustomError>,
CustomError: Debug,
Memory: VirtualMemory,
§fn prepare_csr_read<C>(
_csrs: &C,
csr_index: u16,
raw_value: Reg::Type,
output_value: &mut Reg::Type,
) -> Result<bool, CsrError<CustomError>>where
C: Csrs<Self::Reg, CustomError>,
fn prepare_csr_read<C>(
_csrs: &C,
csr_index: u16,
raw_value: Reg::Type,
output_value: &mut Reg::Type,
) -> Result<bool, CsrError<CustomError>>where
C: Csrs<Self::Reg, CustomError>,
Validate reads to vector CSRs from Zicsr instructions.
All vector CSRs are accessible from unprivileged code (U-mode). Reads are pass-through: the raw value stored in the CSR is the output value.
§fn prepare_csr_write<C>(
csrs: &mut C,
csr_index: u16,
write_value: Reg::Type,
output_value: &mut Reg::Type,
) -> Result<bool, CsrError<CustomError>>where
C: Csrs<Self::Reg, CustomError>,
fn prepare_csr_write<C>(
csrs: &mut C,
csr_index: u16,
write_value: Reg::Type,
output_value: &mut Reg::Type,
) -> Result<bool, CsrError<CustomError>>where
C: Csrs<Self::Reg, CustomError>,
Validate, sanitize, and mirror writes to vector CSRs from Zicsr instructions.
Enforces WARL semantics and vcsr mirroring:
vl,vtype,vlenbare read-only: writes are rejectedvxsat: only bit 0 is writable; mirrors intovcsr[0]vxrm: only bits[1:0]are writable; mirrors intovcsr[2:1]vcsr: only bits[2:0]are writable; mirrors intovxsatandvxrmvstart: full XLEN write allowed (WARL, implementation may restrict range)
§fn execute(
self,
state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>,
) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
fn execute( self, state: &mut InterpreterState<Reg, ExtState, Memory, PC, InstructionHandler, CustomError>, ) -> Result<ControlFlow<()>, ExecutionError<Reg::Type, CustomError>>
Execute instruction
Auto Trait Implementations§
impl<Reg, ExtState, Memory, IF, InstructionHandler, CustomError> Freeze for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>
impl<Reg, ExtState, Memory, IF, InstructionHandler, CustomError> RefUnwindSafe for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>where
ExtState: RefUnwindSafe,
Memory: RefUnwindSafe,
IF: RefUnwindSafe,
InstructionHandler: RefUnwindSafe,
CustomError: RefUnwindSafe,
<Reg as Register>::Type: RefUnwindSafe,
impl<Reg, ExtState, Memory, IF, InstructionHandler, CustomError> Send for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>
impl<Reg, ExtState, Memory, IF, InstructionHandler, CustomError> Sync for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>
impl<Reg, ExtState, Memory, IF, InstructionHandler, CustomError> Unpin for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>
impl<Reg, ExtState, Memory, IF, InstructionHandler, CustomError> UnsafeUnpin for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>where
ExtState: UnsafeUnpin,
Memory: UnsafeUnpin,
IF: UnsafeUnpin,
InstructionHandler: UnsafeUnpin,
<Reg as Register>::Type: UnsafeUnpin,
impl<Reg, ExtState, Memory, IF, InstructionHandler, CustomError> UnwindSafe for InterpreterState<Reg, ExtState, Memory, IF, InstructionHandler, CustomError>where
ExtState: UnwindSafe,
Memory: UnwindSafe,
IF: UnwindSafe,
InstructionHandler: UnwindSafe,
CustomError: UnwindSafe,
<Reg as Register>::Type: UnwindSafe,
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