Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Operator"></param>
        /// <param name="Signed"></param>
        private void _DoBinaryOperation(string Operator, CTypeSign Signed)
        {
            switch (Operator)
            {
            case "+": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.AdditionSigned : SafeBinaryOperator.AdditionUnsigned); break;

            case "-": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.SubstractionSigned : SafeBinaryOperator.SubstractionUnsigned); break;

            case "*": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.MultiplySigned : SafeBinaryOperator.MultiplyUnsigned); break;

            case "/": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.DivideSigned : SafeBinaryOperator.DivideUnsigned); break;

            case "%": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.RemainingSigned : SafeBinaryOperator.RemainingUnsigned); break;

            case "&": SafeILGenerator.BinaryOperation(SafeBinaryOperator.And); break;

            case "|": SafeILGenerator.BinaryOperation(SafeBinaryOperator.Or); break;

            case "^": SafeILGenerator.BinaryOperation(SafeBinaryOperator.Xor); break;

            case "<<": SafeILGenerator.BinaryOperation(SafeBinaryOperator.ShiftLeft); break;

            case ">>": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.ShiftRightSigned : SafeBinaryOperator.ShiftRightUnsigned); break;

            case "&&": SafeILGenerator.BinaryOperation(SafeBinaryOperator.And); break;

            case "||": SafeILGenerator.BinaryOperation(SafeBinaryOperator.Or); break;

            case "<": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.LessThanSigned : SafeBinaryComparison.LessThanUnsigned); break;

            case ">": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.GreaterThanSigned : SafeBinaryComparison.GreaterThanUnsigned); break;

            case "<=": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.LessOrEqualSigned : SafeBinaryComparison.LessOrEqualUnsigned); break;

            case ">=": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.GreaterOrEqualSigned : SafeBinaryComparison.GreaterOrEqualUnsigned); break;

            case "==": SafeILGenerator.CompareBinary(SafeBinaryComparison.Equals); break;

            case "!=": SafeILGenerator.CompareBinary(SafeBinaryComparison.NotEquals); break;

            default: throw (new NotImplementedException(String.Format("Operator {0} not implemented", Operator)));
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Operator"></param>
        /// <param name="Signed"></param>
        private void _DoBinaryOperation(string Operator, CTypeSign Signed)
        {
            switch (Operator)
            {
                case "+": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.AdditionSigned : SafeBinaryOperator.AdditionUnsigned); break;
                case "-": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.SubstractionSigned : SafeBinaryOperator.SubstractionUnsigned); break;
                case "*": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.MultiplySigned : SafeBinaryOperator.MultiplyUnsigned); break;
                case "/": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.DivideSigned : SafeBinaryOperator.DivideUnsigned); break;
                case "%": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.RemainingSigned : SafeBinaryOperator.RemainingUnsigned); break;

                case "&": SafeILGenerator.BinaryOperation(SafeBinaryOperator.And); break;
                case "|": SafeILGenerator.BinaryOperation(SafeBinaryOperator.Or); break;
                case "^": SafeILGenerator.BinaryOperation(SafeBinaryOperator.Xor); break;

                case "<<": SafeILGenerator.BinaryOperation(SafeBinaryOperator.ShiftLeft); break;
                case ">>": SafeILGenerator.BinaryOperation(Signed == CTypeSign.Signed ? SafeBinaryOperator.ShiftRightSigned : SafeBinaryOperator.ShiftRightUnsigned); break;

                case "&&": SafeILGenerator.BinaryOperation(SafeBinaryOperator.And); break;
                case "||": SafeILGenerator.BinaryOperation(SafeBinaryOperator.Or); break;

                case "<": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.LessThanSigned : SafeBinaryComparison.LessThanUnsigned); break;
                case ">": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.GreaterThanSigned : SafeBinaryComparison.GreaterThanUnsigned); break;
                case "<=": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.LessOrEqualSigned : SafeBinaryComparison.LessOrEqualUnsigned); break;
                case ">=": SafeILGenerator.CompareBinary(Signed == CTypeSign.Signed ? SafeBinaryComparison.GreaterOrEqualSigned : SafeBinaryComparison.GreaterOrEqualUnsigned); break;
                case "==": SafeILGenerator.CompareBinary(SafeBinaryComparison.Equals); break;
                case "!=": SafeILGenerator.CompareBinary(SafeBinaryComparison.NotEquals); break;

                default: throw (new NotImplementedException(String.Format("Operator {0} not implemented", Operator)));
            }
        }