Class DefUseInfo

java.lang.Object
com.pnfsoftware.jeb.core.units.code.DefUseInfo
Direct Known Subclasses:
EDefUseInfo

public class DefUseInfo extends Object
Def-use information object provided by instruction for data-flow analysis purposes. Can be subclassed.
  • Field Details

    • FLAG_INCLUDE_POTENTIALS

      public static final int FLAG_INCLUDE_POTENTIALS
      Include potential definitions and uses.
      See Also:
    • FLAG_INCLUDE_SPOILED

      public static final int FLAG_INCLUDE_SPOILED
      Include spoiled variables.
      See Also:
    • CONSERVATIVE

      public static final int CONSERVATIVE
      Conservative collection flags.
      See Also:
    • insnAddress

      public Long insnAddress
      Instruction address, if known.
    • def

      public IdRanges def
      verified defines / never null
    • use

      public IdRanges use
      verified uses / never null
    • defpot

      public IdRanges defpot
      potential defines
      may be null (non-null IFF the FLAG_INCLUDE_POTENTIALS flag was set)
      must not intersect def
    • usepot

      public IdRanges usepot
      potential uses
      may be null (non-null IFF the FLAG_INCLUDE_POTENTIALS flag was set)
      must not intersect use
    • spoiled

      public IdRanges spoiled
      spoiled variables, i.e. vars defined to unusable values a.k.a. collateral writes
      may be null (non-null IFF the FLAG_INCLUDE_SPOILED flag was set)
  • Constructor Details

    • DefUseInfo

      public DefUseInfo()
      Create def-use information with default flags.
    • DefUseInfo

      public DefUseInfo(int flags)
      Create def-use information.
      Parameters:
      flags - collection flags
  • Method Details

    • getInstructionAddress

      public Long getInstructionAddress()
      Get the instruction address.
      Returns:
      instruction address, or null
    • setInstructionAddress

      public void setInstructionAddress(long addr)
      Set the instruction address.
      Parameters:
      addr - instruction address
    • clear

      public void clear()
      Clear all collected information.
    • shouldCollectPotentials

      public boolean shouldCollectPotentials()
      Determine whether potential definitions and uses should be collected.
      Returns:
      true if potential definitions and uses should be collected
    • shouldCollectSpoiled

      public boolean shouldCollectSpoiled()
      Determine whether spoiled variables should be collected.
      Returns:
      true if spoiled variables should be collected
    • getDef

      public IdRanges getDef()
      Get defined variable ranges.
      Returns:
      defined variable ranges
    • getUse

      public IdRanges getUse()
      Get used variable ranges.
      Returns:
      used variable ranges
    • getDefinedVarIds

      public List<Integer> getDefinedVarIds()
      Get defined variable ids.
      Returns:
      defined variable ids
    • getUsedVarIds

      public List<Integer> getUsedVarIds()
      Get used variable ids.
      Returns:
      used variable ids
    • getPotentiallyDefinedVarIds

      public List<Integer> getPotentiallyDefinedVarIds()
      Get potentially defined variable ids.
      Returns:
      potentially defined variable ids
    • getPotentiallyUsedVarIds

      public List<Integer> getPotentiallyUsedVarIds()
      Get potentially used variable ids.
      Returns:
      potentially used variable ids
    • getSpoiledVarIds

      public List<Integer> getSpoiledVarIds()
      Get spoiled variable ids.
      Returns:
      spoiled variable ids
    • toString

      public String toString()
      Overrides:
      toString in class Object