Class MultiSlotDualAssign

java.lang.Object
ghidra.program.model.lang.protorules.AssignAction
ghidra.program.model.lang.protorules.MultiSlotDualAssign

public class MultiSlotDualAssign extends AssignAction
Consume multiple registers from different storage classes to pass a data-type This action is for calling conventions that can use both floating-point and general purpose registers when assigning storage for a single composite data-type, such as the X86-64 System V ABI
  • Constructor Details

    • MultiSlotDualAssign

      protected MultiSlotDualAssign(ParamListStandard res)
      Constructor for use with decode. Set default configuration.
      Parameters:
      res - is the new resource set to associate with this action
    • MultiSlotDualAssign

      public MultiSlotDualAssign(StorageClass baseStore, StorageClass altStore, boolean stack, boolean mostSig, boolean justRight, boolean fillAlt, ParamListStandard res) throws InvalidInputException
      Constructor
      Parameters:
      baseStore - resource list from which to consume general tiles
      altStore - resource list form which to consume alternate tiles
      stack - true if resources can be consumed from the stack
      mostSig - true if resources are consumed starting with most significant bytes
      justRight - true if initial bytes are padding for odd data-type sizes
      fillAlt - true if a single primitive needs to fill an alternate tile
      res - is the new resource set to associate with this action
      Throws:
      InvalidInputException - if the required elements are not available in the resource list
  • Method Details

    • clone

      public AssignAction clone(ParamListStandard newResource) throws InvalidInputException
      Description copied from class: AssignAction
      Make a copy of this action
      Specified by:
      clone in class AssignAction
      Parameters:
      newResource - is the new resource object that will own the clone
      Returns:
      the newly allocated copy
      Throws:
      InvalidInputException - if required configuration is not present in new resource object
    • isEquivalent

      public boolean isEquivalent(AssignAction op)
      Description copied from class: AssignAction
      Test if the given action is configured and performs identically to this
      Specified by:
      isEquivalent in class AssignAction
      Parameters:
      op - is the given action
      Returns:
      true if the two actions are equivalent
    • assignAddress

      public int assignAddress(DataType dt, PrototypePieces proto, int pos, DataTypeManager dtManager, int[] status, ParameterPieces res)
      Description copied from class: AssignAction
      Assign an address and other meta-data for a specific parameter or for return storage in context The Address is assigned based on the data-type of the parameter, available register resources, and other details of the function prototype. Consumed resources are marked. This method returns a response code: - SUCCESS - indicating the Address was successfully assigned - FAIL - if the Address could not be assigned - HIDDENRET_PTRPARAM - if an additional hidden return parameter is required
      Specified by:
      assignAddress in class AssignAction
      Parameters:
      dt - is the data-type of the parameter or return value
      proto - is the high-level description of the function prototype
      pos - is the position of the parameter (pos>=0) or return storage (pos=-1)
      dtManager - is a data-type manager for (possibly) transforming the data-type
      status - is the resource consumption array
      res - will hold the resulting description of the parameter
      Returns:
      the response code
    • encode

      public void encode(Encoder encoder) throws IOException
      Description copied from class: AssignAction
      Save this action and its configuration to a stream
      Specified by:
      encode in class AssignAction
      Parameters:
      encoder - is the stream encoder
      Throws:
      IOException - for problems writing to the stream
    • restoreXml

      public void restoreXml(XmlPullParser parser) throws XmlParseException
      Description copied from class: AssignAction
      Configure any details of how this action should behave from the stream
      Specified by:
      restoreXml in class AssignAction
      Parameters:
      parser - is the given stream decoder
      Throws:
      XmlParseException - is there are problems decoding the stream