public BinaryOperation(BinaryOperationType type, Variable first, Variable second, Variable result) { Type = type; First = first; Second = second; Result = result; }
public static BinaryOperation Divide(Variable argA, Variable argB, Variable result) => new BinaryOperation(BinaryOperationType.Div, argA, argB, result);
public static BinaryOperation Modulo(Variable argA, Variable argB, Variable result) => new BinaryOperation(BinaryOperationType.Mod, argA, argB, result);
public static BinaryOperation Multiply(Variable argA, Variable argB, Variable result) => new BinaryOperation(BinaryOperationType.Mul, argA, argB, result);
public static BinaryOperation Xor(Variable argA, Variable argB, Variable result) => new BinaryOperation(BinaryOperationType.Xor, argA, argB, result);
public static BinaryOperation And(Variable argA, Variable argB, Variable result) => new BinaryOperation(BinaryOperationType.And, argA, argB, result);
public static BinaryOperation ShiftRight(Variable argA, Variable argB, Variable result) => new BinaryOperation(BinaryOperationType.ShiftRight, argA, argB, result);
public static BinaryOperation Subtract(Variable argA, Variable argB, Variable result) => new BinaryOperation(BinaryOperationType.Subtract, argA, argB, result);