use crate::instruction::code_offset::CodeOffset;
use crate::instruction::left_double::LeftDouble;
use crate::instruction::left_integer::LeftInteger;
use crate::instruction::right_double::RightDouble;
use crate::instruction::right_integer::RightInteger;
#[derive(Clone, Debug, PartialEq)]
pub enum Instruction {
NOP(), HLT(), SYN(),
IIMOV(LeftInteger, RightInteger), IDMOV(LeftInteger, RightDouble), DIMOV(LeftDouble, RightInteger), DDMOV(LeftDouble, RightDouble),
IADD(LeftInteger, LeftInteger, RightInteger), IDIV(LeftInteger, LeftInteger, RightInteger), IMOD(LeftInteger, LeftInteger, RightInteger), IMUL(LeftInteger, LeftInteger, RightInteger), ISUB(LeftInteger, LeftInteger, RightInteger),
DADD(LeftDouble, LeftDouble, RightDouble), DDIV(LeftDouble, LeftDouble, RightDouble), DMOD(LeftDouble, LeftDouble, RightDouble), DMUL(LeftDouble, LeftDouble, RightDouble), DSUB(LeftDouble, LeftDouble, RightDouble),
IJEQ(LeftInteger, LeftInteger, CodeOffset), IJNE(LeftInteger, LeftInteger, CodeOffset), IJGT(LeftInteger, LeftInteger, CodeOffset), IJLT(LeftInteger, LeftInteger, CodeOffset),
DJEQ(LeftDouble, LeftDouble, CodeOffset), DJNE(LeftDouble, LeftDouble, CodeOffset), DJGT(LeftDouble, LeftDouble, CodeOffset), DJLT(LeftDouble, LeftDouble, CodeOffset), }