Package ghidra.app.plugin.processors.generic

# Class ConstructorPcodeTemplate

java.lang.Object
ghidra.app.plugin.processors.generic.ConstructorPcodeTemplate

All Implemented Interfaces:
  `Serializable`

Direct Known Subclasses:
  `UnimplementedConstructor`

public class ConstructorPcodeTemplate extends Object implements Serializable

See Also:
  - Serialized Form

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ConstructorPcodeTemplate()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addPcodeOpTemplate(Object opT)`
  `int`
  `delaySlotDepth()`
  `int`
  `getFlowFlags()`
  `Handle`
  `getPcode(ArrayList<PcodeOp> pcode, Position position, int off, ArrayList<PcodeOp> delayPcode)`
  Method getPcode.
  `void`
  `optimize()`
  The default pcode generated for a constructor is typically not very efficient.
  `HandleTemplate`
  `result()`
  `void`
  `trimToSize()`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ConstructorPcodeTemplate

    public ConstructorPcodeTemplate()

- ## Method Details

  - ### addPcodeOpTemplate

    public void addPcodeOpTemplate(Object opT) throws SledException
    Throws:
      `SledException`

  - ### trimToSize

    public void trimToSize()

  - ### optimize

    public void optimize()
    The default pcode generated for a constructor is typically not very efficient. For example, for an add instruction, we might generate something like tmp1 = LOAD register_space register1 tmp2 = LOAD register_space register2 tmp3 = ADD tmp1 tmp2 STORE register_space register3 tmp3 This routine marks opcodes and varnodes as potentially omitable, which allows us to generate much simpler pcode whenever there are no dynamic references involved. In the case above we would replace the 4 pcode ops above with a single pcode op: register3 = ADD register1 register2

  - ### getFlowFlags

    public int getFlowFlags()

  - ### getPcode

    public Handle getPcode(ArrayList<PcodeOp> pcode, Position position, int off, ArrayList<PcodeOp> delayPcode) throws Exception
    Method getPcode. Recursive pcode generation method.
    Parameters:
      `pcode` - - current list of pcode instructions to which we will append new instructions
      `position` -
      `off` -
      `delayPcode` - - pcode for instruction(s) in delay slot
    Returns:
      HandleTemplate - handle for the result of this constructors pcode
    Throws:
      `Exception`

  - ### delaySlotDepth

    public int delaySlotDepth()

  - ### result

    public HandleTemplate result()