mod exec;
mod read_image;
use crate::emu::{Mem, Stack};
#[derive(Debug)]
pub struct Emu {
stack: Stack,
mem: Mem,
}
impl Emu {
pub const ENTRY_ADDR: u32 = 0x100;
#[expect(clippy::new_without_default)]
#[inline]
#[must_use]
pub fn new() -> Self {
let mem = Mem::with_capacity(Mem::DEFAULT_SIZE);
Self { stack: Default::default(), mem }
}
#[inline(always)]
#[must_use]
pub fn stack(&self) -> &Stack {
&self.stack
}
#[inline(always)]
#[must_use]
pub fn stack_mut(&mut self) -> &mut Stack {
&mut self.stack
}
#[inline(always)]
#[must_use]
pub fn mem(&self) -> &Mem {
&self.mem
}
#[inline(always)]
#[must_use]
pub fn mem_mut(&mut self) -> &mut Mem {
&mut self.mem
}
#[inline]
pub fn reboot(&mut self) {
self.stack.store_pc(Self::ENTRY_ADDR);
}
}