Package ghidra.program.model.pcode


package ghidra.program.model.pcode
  • Class
    Description
    Utility class for the myriad ways of marshaling/unmarshaling an address and an optional size, to/from XML for the various configuration files.
    An annotation for a data element being transferred to/from a stream This class parallels the XML concept of an attribute on an element.
    Block representing and '&&' or '||' control flow path within a conditional expression possible multiple incoming edges 2 outgoing edges, one for true control flow, one for false control flow one "initial" condition block, with 2 outgoing edges one "secondary" condition block, with 2 outgoing edges, exactly 1 incoming edge from "initial"
    Placeholder for a basic block (BlockBasic) within a structured control-flow graph.
    Do-while block: possible multiple incoming edges 1 (implied) edge outgoing back to itself 1 edge outgoing (the loop exit) 1 block representing the body of the loop
    A "plain" goto block possible multiple incoming edges no outgoing edges 1 (implied) outgoing edge representing the unstructured goto
    A block (with in edges and out edges) that contains other blocks
    A standard if/else control flow block possible multiple incoming edges 1 outgoing edge - going to the common out block rejoining the 2 control flows 1 "condition" block with exactly 2 outputs 1 "true" block representing the control flow if the condition is true 1 "false" block representing the control flow if the condition is false
    Block representing an if () goto control flow possible multiple incoming edges 1 output edge if the condition is false 1 (implied) output edge representing the unstructured control flow if the condition is true 1 block evaluating the condition
    Block representing an infinite loop possible multiple incoming edges no outgoing edges 1 (implied) outgoing edge representing loop to the top control flow 1 interior block representing the body of the loop
    Block representing a sequence of other blocks possible multiple incoming edges 1 outgoing edge 1 or more interior blocks that are executed in sequence
     
    A block representing a 2-or-more control flow branchpoint possible multiple incoming edges 1 or more outgoing edges (as in switch control flow) 2 or more (implied) outgoing edges representing unstructured branch destinations (switch case with goto statement) 1 interior block representing the decision block of the switch
    A block containing condition control flow possible multiple incoming edges 1 outgoing edge representing rejoined control flow 2 interior blocks one "condition" block representing the decision point on whether to take the conditional flow one "body" block representing the conditional flow that may be followed or may be skipped
    A block representing a switch construction possible multiple incoming edges 1 outgoing edge representing all the interior control flow cases coming back together 1 interior block representing the decision point with outgoing edges to the different cases (or the exit block) multiple interior blocks for each "case" of the switch cases must exactly 1 outgoing edge to the common exit block or have no outgoing edges
    Block representing a while-do (exit from the top) loop construction possible multiple incoming edges 1 outgoing exit edge 1 (implied) loop edge 1 interior block representing the top of the loop and the decision point for staying in the loop 1 interior block representing the body of the loop, which always exits back to the top of the loop
    An object that can ingest bytes from a stream in preparation for decoding
    An Encoder that holds its bytes in memory (where they can possibly be edited) and can then finally write them all to an OutputStream via a call to writeTo()
     
    An interface for reading structured data from a stream All data is loosely structured as with an XML document.
    Exception thrown for errors decoding decompiler objects from stream
    A HighSymbol mapping based on local hashing of the symbol's Varnode within a function's syntax tree.
    A hash utility to uniquely identify a temporary Varnode in data-flow Most Varnodes can be identified within the data-flow graph by their storage address and the address of the PcodeOp that defines them.
    An annotation for a specific collection of hierarchical data This record parallels the XML concept of an element.
    An interface for writing structured data to a stream The resulting encoded data is structured similarly to an XML document.
     
    High-level prototype of a function based on Varnodes, describing the inputs and outputs of this function.
    A container for global symbols in the decompiler's model of a function.
    A global symbol as part of the decompiler's model of a function.
    A constant that has been given a datatype (like a constant that is really a pointer)
    A symbol, within a decompiler model, for a function without a body in the current Program.
    High-level abstraction associated with a low level function made up of assembly instructions.
    HighFunctionDBUtil provides various methods for updating the state of a function contained within a program database.
     
    A function symbol that represents only a shell of (the name and address) the function, when no other information is available.
    A function symbol that encapsulates detailed information about a particular function for the purposes of decompilation.
    All references (per function) to a single global variable
    A symbol with no underlying data-type.
     
    Other forms of variable, these are typically compiler infrastructure like the stackpointer or saved registers
    High-level function parameter
    High-level abstraction associated with a low level function made up of assembly instructions.
    A symbol within the decompiler's model of a particular function.
    A High-level variable (as in a high-level language like C/C++) built out of Varnodes (low-level variables).
    JumpTable found as part of the decompilation of a function
    A byte buffer that is stored as a linked list of pages.
    A linked-list page node
    An iterator into the byte buffer
    A better linked list implementation than provided by java.util.
    A container for local symbols within the decompiler's model of a function.
    A normal address based HighSymbol mapping with an associated Data object
    A normal mapping of a HighSymbol to a particular Address, consuming a set number of bytes
    A class for dynamically collecting a stream of bytes and then later dumping those bytes to a stream It allows the bytes to be edited in the middle of collection
     
    Alter address space decoding for a specific overlay space.
    A byte-based encoder designed to marshal to the decompiler efficiently See PackedDecode for details of the encoding format
    Alter address space encoding for a specific overlay space.
    ParamMeasure
    A data-type representing an unspecified piece of a parent Union data-type.
    This is an encoder that produces encodings that can be retroactively patched.
     
    Blocks of PcodeOps
     
    A basic block constructed from PcodeOps
    Class for marshaling DataType objects to and from the Decompiler.
    Exception generated from problems with Pcode.
    Interface for classes that build PcodeOps and Varnodes
    Pcode Op describes a generic machine operation.
    Some extra things attached to PcodeOp for ease of walking the syntax tree
    Container for PcodeOpAST's
     
    Varnodes and PcodeOps in a coherent graph structure
    Basically a unique address for a PcodeOp It is unique, maintains original assembly instruction address, and is comparable within a basic block
     
    A mapping from a HighSymbol object to the storage that holds the symbol's value.
    A specialized HighSymbol that directs the decompiler to use a specific field of a union, when interpreting a particular PcodeOp that accesses a Varnode whose data-type involves the union.
    Rawest possible Varnode.
    Set of Varnode pieces referred to by a single Varnode in join space as returned by Varnode.decodePieces
    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)
    Container class for VarnodeAST's
     
    An XML based encoder The underlying transfer encoding is an XML document.