Package ghidra.program.model.lang.protorules

# Class MultiMemberAssign

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

public class MultiMemberAssign extends AssignAction
Consume a register per primitive member of an aggregate data-type The data-type is split up into its underlying primitive elements, and each one is assigned a register from the specific resource list. There must be no padding between elements. No packing of elements into a single register occurs.

- ## 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
  Constructor
  Description
  `MultiMemberAssign(StorageClass store, boolean stack, boolean mostSig, ParamListStandard res)`

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

  `restoreActionXml, restoreSideeffectXml`

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

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

- ## Constructor Details

  - ### MultiMemberAssign

    public MultiMemberAssign(StorageClass store, boolean stack, boolean mostSig, ParamListStandard res)

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