From ee5f5a2ec41ed426440346ff47339b63c2cf7c1d Mon Sep 17 00:00:00 2001 From: taitep Date: Tue, 7 Oct 2025 20:23:59 +0200 Subject: FIRST INSTRUCTION WORKING --- src/instructions/gen_tools.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/instructions/gen_tools.rs (limited to 'src/instructions/gen_tools.rs') diff --git a/src/instructions/gen_tools.rs b/src/instructions/gen_tools.rs new file mode 100644 index 0000000..ad9ad62 --- /dev/null +++ b/src/instructions/gen_tools.rs @@ -0,0 +1,22 @@ +use std::hint::unreachable_unchecked; + +use crate::instructions::{OpcodeHandler, Splitter}; + +pub fn insert_funct3_splitter(splitter: &mut Option) -> &mut [OpcodeHandler; 8] { + match splitter { + Some(Splitter::Funct3Splitter(s)) => s.as_mut(), + Some(_) => panic!("Unexpected splitter variant"), + None => { + *splitter = Some(Splitter::Funct3Splitter(Box::new(std::array::from_fn( + |_i| OpcodeHandler { + handler: None, + splitter: None, + }, + )))); + match splitter { + Some(Splitter::Funct3Splitter(s)) => s.as_mut(), + _ => unsafe { unreachable_unchecked() }, + } + } + } +} -- cgit v1.2.3