use crate::{ consts::{Addr, RegId, RegValue}, mem::MemConfig, }; // placeholder - change when exception system is in place pub(crate) type Exception = (); pub(crate) enum InstructionResult { Normal, Exception(Exception), Pause, } pub struct Core { x_regs: [RegValue; 32], pc: Addr, mem: MemConfig, } impl Core { pub fn new(mem: MemConfig) -> Self { Self { x_regs: [0; 32], pc: 0, mem, } } pub fn reset(&mut self, pc: Addr) { self.pc = pc; } fn reg_read(&self, id: RegId) -> RegValue { self.x_regs[id as usize] } fn reg_write(&mut self, id: RegId, value: RegValue) { if id == 0 { return; } self.x_regs[id as usize] = value; } }