Class AbstractUnaryExpressionSolver<T extends UnaryExpression>

    • Constructor Detail

      • AbstractUnaryExpressionSolver

        public AbstractUnaryExpressionSolver​(java.lang.Class<T> tcls)
    • Method Detail

      • solve

        public AssemblyResolution solve​(T exp,
                                        MaskedLong goal,
                                        java.util.Map<java.lang.String,​java.lang.Long> vals,
                                        java.util.Map<java.lang.Integer,​java.lang.Object> res,
                                        AssemblyResolvedConstructor cur,
                                        java.util.Set<SolverHint> hints,
                                        java.lang.String description)
                                 throws NeedsBackfillException
        Description copied from class: AbstractExpressionSolver
        Attempt to solve an expression for a given value
        Specified by:
        solve in class AbstractExpressionSolver<T extends UnaryExpression>
        Parameters:
        exp - the expression to solve
        goal - the desired value of the expression
        vals - values of defined symbols
        res - the results of subconstructor resolutions (used for lengths)
        hints - describes techniques applied by calling solvers
        description - the description to give to resolved solutions
        Returns:
        the resolution
        Throws:
        NeedsBackfillException - if the expression refers to an undefined symbol
      • computeInverse

        public MaskedLong computeInverse​(MaskedLong goal)
        Compute the input value given that the result is known NOTE: Assumes an involution by default
        Parameters:
        goal - the result
        Returns:
        the input value solution
      • compute

        public abstract MaskedLong compute​(MaskedLong val)
        Compute the result of applying the operator to the given value
        Parameters:
        val - the input value
        Returns:
        the result
      • getInstructionLength

        public int getInstructionLength​(T exp,
                                        java.util.Map<java.lang.Integer,​java.lang.Object> res)
        Description copied from class: AbstractExpressionSolver
        Determines the length of the subconstructor that would be returned had the expression not depended on an undefined symbol. This is used by the backfilling process to ensure values are written to the correct offset
        Specified by:
        getInstructionLength in class AbstractExpressionSolver<T extends UnaryExpression>
        Parameters:
        exp - the expression
        res - the results of subconstructor resolutions (used for lengths)
        Returns:
        the length of filled in token field(s).