Class JitDataFlowBlockAnalyzer

java.lang.Object
ghidra.pcode.emu.jit.analysis.JitDataFlowBlockAnalyzer

public class JitDataFlowBlockAnalyzer extends Object
An encapsulation of the per-block data flow analysis done by JitDataFlowModel

One of these is created for each basic block in the passage. This does both the intra-block analysis and encapsulates parts of the inter-block analysis. The class also contains and provides access to some of the analytic results.

See Also:
  • Method Details

    • getVarnodesRead

      public Set<Varnode> getVarnodesRead()
      Get a complete catalog of all varnodes read, including overlapping, subregs, etc.
      Returns:
      the set of varnodes
    • getVarnodesWritten

      public Set<Varnode> getVarnodesWritten()
      Get a complete catalog of all varnodes written, including overlapping, subregs, etc.
      Returns:
      the set of varnodes
    • getOutput

      public List<JitVal> getOutput(Varnode varnode)
      Get an ordered list of all values involved in the latest definition of the given varnode.
      Parameters:
      varnode - the varnode whose definition(s) to retrieve
      Returns:
      the list of values
      See Also:
    • getOutput

      public List<JitVal> getOutput(Register register)
      Get an ordered list of all values involved in the latest definition of the given register.
      Parameters:
      register - the register whose definition(s) to retrieve
      Returns:
      the list of values
      See Also:
    • getVar

      public JitVal getVar(Varnode vn)
      Get the latest definition of the given varnode, synthesizing ops is required.

      NOTE: May produce phi nodes that need additional inter-block analysis

      Parameters:
      vn - the varnode
      Returns:
      the latest definition for the block analyzed
      See Also: