Class VarnodeAST

java.lang.Object
ghidra.program.model.pcode.Varnode
ghidra.program.model.pcode.VarnodeAST

public class VarnodeAST extends Varnode
This type of Varnode is a node in an Abstract Syntax Tree It keeps track of its defining PcodeOp (in-edge) and PcodeOps which use it (out-edges)
  • Constructor Details

    • VarnodeAST

      public VarnodeAST(Address a, int sz, int id)
  • Method Details

    • isFree

      public boolean isFree()
      Overrides:
      isFree in class Varnode
    • isInput

      public boolean isInput()
      Overrides:
      isInput in class Varnode
      Returns:
      is input to a pcode op
    • isPersistent

      public boolean isPersistent()
      Overrides:
      isPersistent in class Varnode
      Returns:
      is persistent
    • isAddrTied

      public boolean isAddrTied()
      Overrides:
      isAddrTied in class Varnode
      Returns:
      is mapped to an address
    • isUnaffected

      public boolean isUnaffected()
      Overrides:
      isUnaffected in class Varnode
    • getDef

      public PcodeOp getDef()
      Overrides:
      getDef in class Varnode
      Returns:
      get the pcode op this varnode belongs to
    • getDescendants

      public Iterator<PcodeOp> getDescendants()
      Overrides:
      getDescendants in class Varnode
      Returns:
      iterator to all PcodeOp s that take this as input
    • getLoneDescend

      public PcodeOp getLoneDescend()
      Description copied from class: Varnode
      If there is only one PcodeOp taking this varnode as input, return it. Otherwise return null
      Overrides:
      getLoneDescend in class Varnode
      Returns:
      the lone descendant PcodeOp
    • hasNoDescend

      public boolean hasNoDescend()
      Overrides:
      hasNoDescend in class Varnode
      Returns:
      false if the Varnode has a PcodeOp reading it that is part of function data-flow
    • getPCAddress

      public Address getPCAddress()
      Description copied from class: Varnode
      Get the address where this varnode is defined or NO_ADDRESS if this varnode is an input
      Overrides:
      getPCAddress in class Varnode
      Returns:
      the address
    • getHigh

      public HighVariable getHigh()
      Overrides:
      getHigh in class Varnode
      Returns:
      the high level variable this varnode represents
    • getUniqueId

      public int getUniqueId()
    • getMergeGroup

      public short getMergeGroup()
      Overrides:
      getMergeGroup in class Varnode
      Returns:
      the index of the group, within the high containing this, that are forced merged with this
    • setAddrtied

      public void setAddrtied(boolean val)
    • setInput

      public void setInput(boolean val)
    • setPersistent

      public void setPersistent(boolean val)
    • setUnaffected

      public void setUnaffected(boolean val)
    • setFree

      public void setFree(boolean val)
    • setDef

      public void setDef(PcodeOp op)
    • setMergeGroup

      public void setMergeGroup(short val)
    • setHigh

      public void setHigh(HighVariable hi)
    • addDescendant

      public void addDescendant(PcodeOp op)
    • removeDescendant

      public void removeDescendant(PcodeOp op)
    • descendReplace

      public void descendReplace(VarnodeAST vn)
      Replace all of parameter vn's references with this
      Parameters:
      vn - Varnode whose references will get replaced
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Varnode
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Varnode