use types::*;
#[derive(Serialize, Deserialize, PartialEq, Debug, Copy, Clone)]
pub enum Address {
RegAbs(Register),
MemAbs(Word),
MemReg(Register),
Literal(Word),
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Copy, Clone)]
pub enum Register {
R0,
R1,
R2,
R3,
R4,
R5,
R6,
R7,
SP,
BP,
}
#[derive(Serialize, Deserialize, PartialEq, Debug, Copy, Clone)]
pub enum Instruction {
NoOp,
Zero(Address),
Move(Address, Address),
Output(Address),
Input(Address),
Add(Address, Address),
Sub(Address, Address),
Jump(Address),
JumpIfZero(Address, Address),
JumpNotZero(Address, Address),
Push(Address),
Pop(Address),
Halt,
Illegal,
}