use crate::rv32_cpu::rv32_cpu::State; use std::error::Error; use std::fmt::Debug; #[derive(Debug, Clone, Hash, PartialEq, Eq)] pub struct Opcode { pub opcode6_2: u32, pub opcode14_12: Option, pub opcode31_27: Option, } pub trait Instruction: Debug { fn opcode(&self) -> Opcode; fn execute(&self, instruction: u32, cpu: &mut State) -> Result<(), Box>; }