public void RelationalTypeCMP(RelationalType type, string label) { switch (type) { case RelationalType.Equal: assembly.JE(label); break; case RelationalType.NotEqualOrUnordered: assembly.JNE(label); break; case RelationalType.LessThan: assembly.JL(label); break; case RelationalType.LessThanOrEqual: assembly.JLE(label); break; case RelationalType.GreaterThan: assembly.JG(label); break; case RelationalType.GreaterThanOrEqual: assembly.JGE(label); break; case RelationalType.LessThanUnsignedOrUnordered: assembly.JB(label); break; case RelationalType.LessThanOrEqualUnsignedOrUnordered: assembly.JBE(label); break; case RelationalType.GreaterThanUnsignedOrUnordered: assembly.JA(label); break; case RelationalType.GreaterThanOrEqualUnsignedOrUnordered: assembly.JAE(label); break; default: throw new NotImplementedEngineException("'" + type + "' is not supported."); } }
public RelationalType MakeRelational(RelationalOperator op, ArithmeticExpression lhs, ArithmeticExpression rhs) { RelationalType newRelational = new RelationalType(); newRelational.AddLHSArithmeticExpression(lhs); newRelational.AddRelationalOperator(op); newRelational.AddRHSArithmeticExpression(rhs); return(newRelational); }
public LogicalExpression MakeRelationalExperssion(string op, ArithmeticExpression lhs, ArithmeticExpression rhs) { RelationalOperator relationalOp = new RelationalOperator(); if (op == "==") { relationalOp.AddEquals(new Altova.Types.SchemaString("Equals")); } else if (op == "!=") { relationalOp.AddNotEquals(new Altova.Types.SchemaString("NotEquals")); } else if (op == "<") { relationalOp.AddLessThan(new Altova.Types.SchemaString("LessThan")); } else if (op == "<=") { relationalOp.AddLessThanOrEquals(new Altova.Types.SchemaString("LessThanOrEquals")); } else if (op == ">") { relationalOp.AddGreaterThan(new Altova.Types.SchemaString("GreaterThan")); } else if (op == "<=") { relationalOp.AddGreaterThanOrEquals(new Altova.Types.SchemaString("GreaterThanOrEquals")); } RelationalType relationalExpression = MakeRelational(relationalOp, lhs, rhs); LogicalExpression newLogical = new LogicalExpression(); newLogical.AddRelational(relationalExpression); return(newLogical); }
public ExpressionOperatorRelational(RelationalType type) { Type = type; }
private void RelationalTypeCMP(RelationalType type, string okLabel, string errorLabel) { switch (type) { case RelationalType.Equal: assembly.JNE(errorLabel); break; case RelationalType.NotEqualOrUnordered: assembly.JNE(okLabel); break; case RelationalType.LessThan: assembly.JG(errorLabel); assembly.JL(okLabel); break; case RelationalType.LessThanUnsignedOrUnordered: assembly.JA(errorLabel); assembly.JB(okLabel); break; case RelationalType.LessThanOrEqual: assembly.JG(errorLabel); assembly.JL(okLabel); break; case RelationalType.LessThanOrEqualUnsignedOrUnordered: assembly.JA(errorLabel); assembly.JB(okLabel); break; case RelationalType.GreaterThan: assembly.JL(errorLabel); assembly.JG(okLabel); break; case RelationalType.GreaterThanUnsignedOrUnordered: assembly.JB(errorLabel); assembly.JA(okLabel); break; case RelationalType.GreaterThanOrEqual: assembly.JL(errorLabel); assembly.JG(okLabel); break; case RelationalType.GreaterThanOrEqualUnsignedOrUnordered: assembly.JB(errorLabel); assembly.JA(okLabel); break; default: throw new NotImplementedEngineException("'" + type + "' is not supported."); } }
/// <summary> /// Initializes a new instance of the <see cref="ConditionCheck"/> class. /// </summary> /// <param name="type">The type.</param> /// <param name="result">The result.</param> /// <param name="first">The first.</param> /// <param name="second">The second.</param> public ConditionCheck(RelationalType type, Register result, Register first, Register second) : base("ConditionCheck", result, new Operand [] { first, second }) { this.type = type; }
/// <summary> /// Initializes a new instance of the <see cref="ConditionCheck"/> class. /// </summary> /// <param name="type">The type.</param> /// <param name="result">The result.</param> /// <param name="first">The first.</param> /// <param name="second">The second.</param> public ConditionCheck (RelationalType type, Register result, Register first, Register second) : base ("ConditionCheck", result, new Operand [] { first, second }) { this.type = type; }
/// <summary> /// Initializes a new instance of the <see cref="Branch"/> class. /// </summary> /// <param name="type">The type.</param> /// <param name="first">The first.</param> /// <param name="second">The second.</param> public Branch (RelationalType type, Register first, Register second) : base ("Branch", null, new Operand [] { first, second }) { this.type = type; }
/// <summary> /// Initializes a new instance of the <see cref="Branch"/> class. /// </summary> /// <param name="type">The type.</param> /// <param name="first">The first.</param> /// <param name="second">The second.</param> public Branch(RelationalType type, Register first, Register second) : base("Branch", null, new Operand [] { first, second }) { this.type = type; }