Skip to main content

ExecutableInstruction

Trait ExecutableInstruction 

Source
pub trait ExecutableInstruction<Regs, Env, Memory, PC>{
    // Required method
    fn execute(
        self,
        rs1rs2_values: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>,
        regs: &mut Regs,
        env: &mut Env,
        memory: &mut Memory,
        program_counter: &mut PC,
    ) -> ExecutionResult<Self::Reg>;
}
Expand description

Trait for executable instructions

Required Methods§

Source

fn execute( self, rs1rs2_values: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

Execute instruction.

Instructions might place additional constraints on Env to require additional registers, handlers (like SystemInstructionHandler) or other resources. If no such constraint is used, () can be used as a placeholder.

On success ExecutionResult::Continue { rd: rd, value: rd_value } is returned, which will be written into the register file. In most cases this is the only register that needs to be written. If no value needs to be written, ExecutionResult::ContinueNoWrite should be returned, which skips the register file write entirely.

Dyn Compatibility§

This trait is not dyn compatible.

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

Implementations on Foreign Types§

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32AInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, Env: ReservationSet<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32BInstruction<Reg>
where Reg: Register<Type = u32> + Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32Instruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32MInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZaamoInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZabhaInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZacasInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZalasrInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZalrscInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, Env: ReservationSet<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZbaInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZbbInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZbcInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZbkbInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZbkcInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZbkxInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZbsInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZcaInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZcbInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZcmpInstruction<Reg>
where Reg: ZcmpRegister<Type = u32> + Register<Type = u32>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZknInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZkndInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZkneInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZknhInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv32ZmmulInstruction<Reg>
where Reg: Register<Type = u32>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64AInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, Env: ReservationSet<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64BInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64Instruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64MInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZaamoInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZabhaInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZacasInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZalasrInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZalrscInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, Env: ReservationSet<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZbaInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZbbInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZbcInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZbkbInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZbkcInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZbkxInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZbsInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZcaInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZcbInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZcmpInstruction<Reg>
where Reg: ZcmpRegister<Type = u64> + Register<Type = u64>, Regs: RegisterFile<Reg>, Memory: VirtualMemory, PC: ProgramCounter<Reg::Type, Memory>, Env: SystemInstructionHandler<Reg, Regs, Memory, PC>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZknInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZkndInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZkneInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZknhInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for Rv64ZmmulInstruction<Reg>
where Reg: Register<Type = u64>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZawrsInstruction<Reg>
where Reg: Register, Env: WrsHandler,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZicondInstruction<Reg>
where Reg: Register, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZicsrInstruction<Reg>
where Reg: Register, Regs: RegisterFile<Reg>, Env: Csrs<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZkrInstruction<Reg>
where Reg: Register + Register, Env: ZkrSeedSource + Csrs<Reg>, Regs: RegisterFile<Reg>,

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZvbbInstruction<Reg>

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZvbcInstruction<Reg>

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZveXxInstruction<Reg>

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

§

impl<Reg, Regs, Env, Memory, PC> ExecutableInstruction<Regs, Env, Memory, PC> for ZvkbInstruction<Reg>

§

fn execute( self, _: Rs1Rs2OperandValues<<Self::Reg as Register>::Type>, regs: &mut Regs, env: &mut Env, memory: &mut Memory, program_counter: &mut PC, ) -> ExecutionResult<Self::Reg>

Implementors§