public static bool AreEqual(AssTarget x, AssTarget y) { if (x.GetType() != y.GetType()) return false; switch (MethodName(x.GetType().ToString())) { case "IntegerConstant": return ((IntegerConstant)x).Value == ((IntegerConstant)y).Value; case "BinaryConstant": return ((BinaryConstant)x).Value == ((BinaryConstant)y).Value; case "ByteConstant": return ((ByteConstant)x).Value == ((ByteConstant)y).Value; case "HexadecimalConstant": return ((HexadecimalConstant)x).Value == ((HexadecimalConstant)y).Value; case "OctalConstant": return ((OctalConstant)x).Value == ((OctalConstant)y).Value; case "ParamRegister": return ((ParamRegister)x).Position == ((ParamRegister)y).Position; case "Register": return ((Register)x).Value == ((Register)y).Value; case "RegisterOffset": return ((RegisterOffset)x).Register == ((RegisterOffset)y).Register && ((RegisterOffset)x).IntOffset == ((RegisterOffset)y).IntOffset && ((RegisterOffset)x).LabelOffset == ((RegisterOffset)y).LabelOffset; default: return false; } }
public Xor(AssTarget val1, AssTarget val2) { Val1 = val1; Val2 = val2; }
public Shr(AssTarget value, AssTarget target) { Value = value; Target = target; }
public Mult(AssTarget value, AssTarget target) { Value = value; Target = target; }
public Divide(AssTarget value, AssTarget target) { Value = value; Target = target; }
public Move(AssTarget from, AssTarget to) { From = from; To = to; }
public Compare(AssTarget val1, AssTarget val2) { Val1 = val1; Val2 = val2; }
public And(AssTarget val1, AssTarget val2) { Val1 = val1; Val2 = val2; }
public Add(AssTarget value, AssTarget target) { Value = value; Target = target; }
public Pop(AssTarget target) { Target = target; }
public Push(AssTarget target) { Target = target; }
public Lea(AssTarget from, AssTarget to) { From = from; To = to; }