use crate::Register;
use crate::Origin;
use crate::ConditionalOrigin;
use crate::JumpDestination;
use crate::{CaiSign, CaiOrder, CaiDigit, CaiComma};
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum Instruction {
Add(Register),
Sub(Register),
Mul(Register),
Div(Register),
Sqr(Register),
Abs,
CopyM(Register),
CopyToA(Register),
SwapA(Register),
CopyDecimal,
Jump(Origin),
ConditionalJump(ConditionalOrigin),
Label(JumpDestination),
Reset(Register),
Print(Register),
Stop,
NewLine,
CaiStart,
Cai(CaiSign, CaiOrder, CaiDigit, CaiComma),
DrExchange,
}
#[cfg(test)]
mod tests {
use crate::instruction::*;
#[test]
pub fn instruction_equality() {
assert_eq!(Instruction::Add(Register::B), Instruction::Add(Register::B));
}
}