# Package ghidra.program.model.pcode

package ghidra.program.model.pcode

- Class
  Description
  AddressXML
  Utility class for the myriad ways of marshaling/unmarshaling an address and an optional size, to/from XML for the various configuration files.
  AttributeId
  An annotation for a data element being transferred to/from a stream This class parallels the XML concept of an attribute on an element.
  BlockCondition
  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"
  BlockCopy
  Placeholder for a basic block (BlockBasic) within a structured control-flow graph.
  BlockDoWhile
  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
  BlockGoto
  A "plain" goto block possible multiple incoming edges no outgoing edges 1 (implied) outgoing edge representing the unstructured goto
  BlockGraph
  A block (with in edges and out edges) that contains other blocks
  BlockIfElse
  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
  BlockIfGoto
  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
  BlockInfLoop
  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
  BlockList
  Block representing a sequence of other blocks possible multiple incoming edges 1 outgoing edge 1 or more interior blocks that are executed in sequence
  BlockMap
  BlockMultiGoto
  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
  BlockProperIf
  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
  BlockSwitch
  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
  BlockWhileDo
  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
  ByteIngest
  An object that can ingest bytes from a stream in preparation for decoding
  CachedEncoder
  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()
  DataTypeSymbol
  Decoder
  An interface for reading structured data from a stream All data is loosely structured as with an XML document.
  DecoderException
  Exception thrown for errors decoding decompiler objects from stream
  DynamicEntry
  A HighSymbol mapping based on local hashing of the symbol's Varnode within a function's syntax tree.
  DynamicHash
  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.
  ElementId
  An annotation for a specific collection of hierarchical data This record parallels the XML concept of an element.
  Encoder
  An interface for writing structured data to a stream
  EquateSymbol
  FunctionPrototype
  High-level prototype of a function based on Varnodes, describing the inputs and outputs of this function.
  GlobalSymbolMap
  A container for global symbols in the decompiler's model of a function.
  HighCodeSymbol
  A global symbol as part of the decompiler's model of a function.
  HighConstant
  A constant that has been given a datatype (like a constant that is really a pointer)
  HighExternalSymbol
  A symbol, within a decompiler model, for a function without a body in the current Program.
  HighFunction
  High-level abstraction associated with a low level function made up of assembly instructions.
  HighFunctionDBUtil
  `HighFunctionDBUtil` provides various methods for updating the state of a function contained within a program database.
  HighFunctionDBUtil.ReturnCommitOption
  HighFunctionShellSymbol
  A function symbol that represents only a shell of (the name and address) the function, when no other information is available.
  HighFunctionSymbol
  A function symbol that encapsulates detailed information about a particular function for the purposes of decompilation.
  HighGlobal
  All references (per function) to a single global variable
  HighLabelSymbol
  A symbol with no underlying data-type.
  HighLocal
  HighOther
  Other forms of variable, these are typically compiler infrastructure like the stackpointer or saved registers
  HighParam
  High-level function parameter
  HighParamID
  High-level abstraction associated with a low level function made up of assembly instructions.
  HighSymbol
  A symbol within the decompiler's model of a particular function.
  HighVariable
  A High-level variable (as in a high-level language like C/C++) built out of Varnodes (low-level variables).
  JumpTable
  JumpTable found as part of the decompilation of a function
  LinkedByteBuffer
  A byte buffer that is stored as a linked list of pages.
  LinkedByteBuffer.ArrayIter
  A linked-list page node
  LinkedByteBuffer.Position
  An iterator into the byte buffer
  ListLinked<T>
  A better linked list implementation than provided by java.util.
  LocalSymbolMap
  A container for local symbols within the decompiler's model of a function.
  MappedDataEntry
  A normal address based HighSymbol mapping with an associated Data object
  MappedEntry
  A normal mapping of a HighSymbol to a particular Address, consuming a set number of bytes
  PackedBytes
  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
  PackedDecode
  PackedDecodeOverlay
  Alter address space decoding for a specific overlay space.
  PackedEncode
  A byte-based encoder designed to marshal to the decompiler efficiently See `PackedDecode` for details of the encoding format
  PackedEncodeOverlay
  Alter address space encoding for a specific overlay space.
  ParamMeasure
  ParamMeasure
  PartialUnion
  A data-type representing an unspecified piece of a parent Union data-type.
  PatchEncoder
  This is an encoder that produces encodings that can be retroactively patched.
  PatchPackedEncode
  PcodeBlock
  Blocks of PcodeOps
  PcodeBlock.BlockEdge
  PcodeBlockBasic
  A basic block constructed from PcodeOps
  PcodeDataTypeManager
  Class for marshaling DataType objects to and from the Decompiler.
  PcodeException
  Exception generated from problems with Pcode.
  PcodeFactory
  Interface for classes that build PcodeOps and Varnodes
  PcodeOp
  Pcode Op describes a generic machine operation.
  PcodeOpAST
  Some extra things attached to PcodeOp for ease of walking the syntax tree
  PcodeOpBank
  Container for PcodeOpAST's
  PcodeOverride
  PcodeSyntaxTree
  Varnodes and PcodeOps in a coherent graph structure
  SequenceNumber
  Basically a unique address for a PcodeOp It is unique, maintains original assembly instruction address, and is comparable within a basic block
  StringIngest
  SymbolEntry
  A mapping from a HighSymbol object to the storage that holds the symbol's value.
  UnionFacetSymbol
  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.
  Varnode
  Rawest possible Varnode.
  Varnode.Join
  Set of Varnode pieces referred to by a single Varnode in join space as returned by Varnode.decodePieces
  VarnodeAST
  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)
  VarnodeBank
  Container class for VarnodeAST's
  VarnodeTranslator
  XmlEncode
  An XML based encoder The underlying transfer encoding is an XML document.