pub fn unpack(&self) -> (InstructionArgumentDefinition, Option<InstructionArgumentDefinition>) {
        match self {
            Self::NonBasic(op) => op.unpack(),
            Self::Set { a, b } => (*a, Some(*b)),
            Self::And { a, b } => (*a, Some(*b)),
            Self::Bor { a, b } => (*a, Some(*b)),
            Self::Xor { a, b } => (*a, Some(*b)),
            Self::Add { a, b } => (*a, Some(*b)),
            Self::Sub { a, b } => (*a, Some(*b)),
            Self::Mul { a, b } => (*a, Some(*b)),
            Self::Shr { a, b } => (*a, Some(*b)),
            Self::Shl { a, b } => (*a, Some(*b)),
            Self::Div { a, b } => (*a, Some(*b)),
            Self::Mod { a, b } => (*a, Some(*b)),
            Self::Ife { a, b } => (*a, Some(*b)),
            Self::Ifn { a, b } => (*a, Some(*b)),
            Self::Ifg { a, b } => (*a, Some(*b)),
            Self::Ifb { a, b } => (*a, Some(*b)),
        }
    }
/// Unpacks the instruction arguments into a first value and an optional second value.
Unpacks the instruction arguments into a first value and an optional second value.
Unpacks the instruction arguments into a first value and an optional second value .
pub fn unpack(&self) -> (InstructionArgumentDefinition, Option<InstructionArgumentDefinition>) {
        match self {
            Self::NonBasic(op) => op.unpack(),
            Self::Set { a, b } => (*a, Some(*b)),
            Self::And { a, b } => (*a, Some(*b)),
            Self::Bor { a, b } => (*a, Some(*b)),
            Self::Xor { a, b } => (*a, Some(*b)),
            Self::Add { a, b } => (*a, Some(*b)),
            Self::Sub { a, b } => (*a, Some(*b)),
            Self::Mul { a, b } => (*a, Some(*b)),
            Self::Shr { a, b } => (*a, Some(*b)),
            Self::Shl { a, b } => (*a, Some(*b)),
            Self::Div { a, b } => (*a, Some(*b)),
            Self::Mod { a, b } => (*a, Some(*b)),
            Self::Ife { a, b } => (*a, Some(*b)),
            Self::Ifn { a, b } => (*a, Some(*b)),
            Self::Ifg { a, b } => (*a, Some(*b)),
            Self::Ifb { a, b } => (*a, Some(*b)),
        }
    }
pub fn unpack ( & self ) -> ( InstructionArgumentDefinition , Option < InstructionArgumentDefinition > ) { match self { Self :: NonBasic ( op ) => op . unpack ( ) , Self :: Set { a , b } => ( * a , Some ( * b ) ) , Self :: And { a , b } => ( * a , Some ( * b ) ) , Self :: Bor { a , b } => ( * a , Some ( * b ) ) , Self :: Xor { a , b } => ( * a , Some ( * b ) ) , Self :: Add { a , b } => ( * a , Some ( * b ) ) , Self :: Sub { a , b } => ( * a , Some ( * b ) ) , Self :: Mul { a , b } => ( * a , Some ( * b ) ) , Self :: Shr { a , b } => ( * a , Some ( * b ) ) , Self :: Shl { a , b } => ( * a , Some ( * b ) ) , Self :: Div { a , b } => ( * a , Some ( * b ) ) , Self :: Mod { a , b } => ( * a , Some ( * b ) ) , Self :: Ife { a , b } => ( * a , Some ( * b ) ) , Self :: Ifn { a , b } => ( * a , Some ( * b ) ) , Self :: Ifg { a , b } => ( * a , Some ( * b ) ) , Self :: Ifb { a , b } => ( * a , Some ( * b ) ) , } }
Unpacks the instruction arguments into a first value and an optional second value.
Unpacks the instruction arguments into a first value and an optional second value .
&self