Exemple #1
0
                    public IJsmExpression Evaluate(IServices services)
                    {
                        IJsmExpression result = _value.Evaluate(services);

                        if (result is IConstExpression number)
                        {
                            return(ValueExpression.Create(number.Value == 0 ? 1 : 0));
                        }
                        return(result);
                    }
Exemple #2
0
                    public IJsmExpression Evaluate(IServices services)
                    {
                        IJsmExpression first = _first.Evaluate(services);
                        IJsmExpression last  = _last.Evaluate(services);

                        if (first is IConstExpression n1 && last is IConstExpression n2)
                        {
                            return(ValueExpression.Create((Int32)(n1.Value ^ n2.Value)));
                        }
                        return(new BitXor(first, last));
                    }
Exemple #3
0
                    public IJsmExpression Evaluate(IServices services)
                    {
                        IJsmExpression first = _first.Evaluate(services);
                        IJsmExpression last  = _last.Evaluate(services);

                        if (first is IConstExpression n1 && last is IConstExpression n2)
                        {
                            return(ValueExpression.Create(n1.Value != n2.Value ? 1 : 0));
                        }
                        return(new NotEquals(first, last));
                    }
Exemple #4
0
                    public IJsmExpression Evaluate(IServices services)
                    {
                        var first = _first.Evaluate(services);
                        var last  = _last.Evaluate(services);

                        if (first is IConstExpression n1 && last is IConstExpression n2)
                        {
                            return(ValueExpression.Create((int)(n1.Value * n2.Value)));
                        }
                        return(new Mul(first, last));
                    }
Exemple #5
0
                    public IJsmExpression Evaluate(IServices services)
                    {
                        var first = _first.Evaluate(services);
                        var last  = _last.Evaluate(services);

                        if (first is IConstExpression n1 && last is IConstExpression n2)
                        {
                            return(ValueExpression.Create(n1.Value <= n2.Value ? 1 : 0));
                        }
                        return(new LessOrEquals(first, last));
                    }
            public static IJsmExpression TryMake(Jsm.Opcode opcode, Int32 param, IStack <IJsmExpression> stack)
            {
                IJsmExpression result = TryMakeInternal(opcode, param, stack);

                return(result?.Evaluate(StatelessServices.Instance)); // Simplify the expression
            }