Add the files and decode logic for RVA

This commit is contained in:
2026-01-12 17:25:02 +01:00
parent 3451a8227c
commit d3e8af85a6
3 changed files with 23 additions and 2 deletions

View File

@@ -51,7 +51,12 @@ impl Instruction {
#[inline]
pub fn funct7(self) -> u8 {
(self.0 >> 25 & 0x7f) as u8
(self.0 >> 25) as u8
}
#[inline]
pub fn funct5(self) -> u8 {
(self.0 >> 27) as u8
}
#[inline]
@@ -95,7 +100,7 @@ impl Instruction {
/// 32bit ones use funct7 in this way
#[inline]
pub fn funct6(self) -> u8 {
(self.0 >> 26 & 0x3f) as u8
(self.0 >> 26) as u8
}
/// Mostly/only used for the SYSTEM opcode

View File

@@ -7,6 +7,7 @@
#[macro_use]
mod macros;
mod rva;
mod rvi;
mod rvm;
@@ -166,6 +167,7 @@ pub(crate) fn find_and_exec(instr: Instruction, core: &mut Core) -> Result<(), E
Ok(())
}
},
0b01011 => rva::find_and_exec(instr, core),
_ => illegal(instr),
}
}

14
src/instructions/rva.rs Normal file
View File

@@ -0,0 +1,14 @@
// Copyright (c) 2026 taitep
// SPDX-License-Identifier: BSD-2-Clause
//
// This file is part of TRVE (https://gitea.taitep.se/taitep/trve)
// See LICENSE file in the project root for full license text.
use super::illegal;
use crate::{core::Core, decode::Instruction, exceptions::Exception};
pub(super) fn find_and_exec(instr: Instruction, core: &mut Core) -> Result<(), Exception> {
match (instr.funct3(), instr.funct5()) {
_ => illegal(instr),
}
}