diff options
Diffstat (limited to 'src/core.rs')
| -rw-r--r-- | src/core.rs | 28 |
1 files changed, 7 insertions, 21 deletions
diff --git a/src/core.rs b/src/core.rs index 48668b5..fdaeafb 100644 --- a/src/core.rs +++ b/src/core.rs @@ -3,18 +3,19 @@ use crate::{ mem::MemConfig, }; -#[derive(PartialEq, Debug, Clone, Copy)] -pub enum ExecutionStatus { - Running, - Paused, - Halted, +// 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, - exec_status: ExecutionStatus, } impl Core { @@ -23,26 +24,11 @@ impl Core { x_regs: [0; 32], pc: 0, mem, - exec_status: ExecutionStatus::Halted, } } pub fn reset(&mut self, pc: Addr) { self.pc = pc; - self.exec_status = ExecutionStatus::Running; - } - - pub fn resume(&mut self) -> ExecutionStatus { - if self.exec_status == ExecutionStatus::Halted { - ExecutionStatus::Halted - } else { - self.exec_status = ExecutionStatus::Running; - ExecutionStatus::Running - } - } - - pub fn exec_status(&self) -> ExecutionStatus { - self.exec_status } fn reg_read(&self, id: RegId) -> RegValue { |
