Package ghidra.program.model.lang.protorules

# 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

- ## Field Summary

  ### Fields inherited from class ghidra.program.model.lang.protorules.AssignAction

  `FAIL, HIDDENRET_PTRPARAM, HIDDENRET_SPECIALREG, HIDDENRET_SPECIALREG_VOID, NO_ASSIGNMENT, resource, SUCCESS`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `MultiSlotDualAssign(ParamListStandard res)`
  Constructor for use with decode.
  ``
  `MultiSlotDualAssign(StorageClass baseStore, StorageClass altStore, boolean stack, boolean mostSig, boolean justRight, boolean fillAlt, ParamListStandard res)`
  Constructor

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `assignAddress(DataType dt, PrototypePieces proto, int pos, DataTypeManager dtManager, int[] status, ParameterPieces res)`
  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.
  `AssignAction`
  `clone(ParamListStandard newResource)`
  Make a copy of this action
  `void`
  `encode(Encoder encoder)`
  Save this action and its configuration to a stream
  `boolean`
  `isEquivalent(AssignAction op)`
  Test if the given action is configured and performs identically to this
  `void`
  `restoreXml(XmlPullParser parser)`
  Configure any details of how this action should behave from the stream

  ### Methods inherited from class ghidra.program.model.lang.protorules.AssignAction

  `justifyPieces, restoreActionXml, restorePreconditionXml, restoreSideeffectXml`

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

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

- ## 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