decompiler 1.0.0
Public Member Functions | Private Attributes | List of all members
ghidra::HiddenReturnAssign Class Reference

Allocate the return value as special input register. More...

#include <modelrules.hh>

Inheritance diagram for ghidra::HiddenReturnAssign:
ghidra::AssignAction

Public Member Functions

 HiddenReturnAssign (const ParamListStandard *res, bool voidLock)
 Constructor.
 
virtual AssignActionclone (const ParamListStandard *newResource) const
 Make a copy of this action. More...
 
virtual uint4 assignAddress (Datatype *dt, const PrototypePieces &proto, int4 pos, TypeFactory &tlist, vector< int4 > &status, ParameterPieces &res) const
 Assign an address and other meta-data for a specific parameter or for return storage in context. More...
 
virtual void decode (Decoder &decoder)
 Configure any details of how this action should behave from the stream. More...
 
- Public Member Functions inherited from ghidra::AssignAction
 AssignAction (const ParamListStandard *res)
 Constructor.
 
virtual AssignActionclone (const ParamListStandard *newResource) const =0
 Make a copy of this action. More...
 
virtual uint4 assignAddress (Datatype *dt, const PrototypePieces &proto, int4 pos, TypeFactory &tlist, vector< int4 > &status, ParameterPieces &res) const =0
 Assign an address and other meta-data for a specific parameter or for return storage in context. More...
 
virtual void decode (Decoder &decoder)=0
 Configure any details of how this action should behave from the stream. More...
 

Private Attributes

uint4 retCode
 The specific signal to pass back.
 

Additional Inherited Members

- Public Types inherited from ghidra::AssignAction
enum  {
  success , fail , hiddenret_ptrparam , hiddenret_specialreg ,
  hiddenret_specialreg_void
}
 
- Static Public Member Functions inherited from ghidra::AssignAction
static AssignActiondecodeAction (Decoder &decoder, const ParamListStandard *res)
 Read the next model rule action element from the stream. More...
 
static AssignActiondecodeSideeffect (Decoder &decoder, const ParamListStandard *res)
 Read the next model rule sideeffect element from the stream. More...
 
- Protected Attributes inherited from ghidra::AssignAction
const ParamListStandardresource
 Resources to which this action applies.
 

Detailed Description

Allocate the return value as special input register.

The assignAddress() method signals with hiddenret_specialreg, indicating that the input register assignMap() method should use storage class TYPECLASS_HIDDENRET to assign an additional input register to hold a pointer to the return value. This is different than the default hiddenret action that assigns a location based TYPECLASS_PTR and generally consumes a general purpose input register.

Member Function Documentation

◆ assignAddress()

uint4 ghidra::HiddenReturnAssign::assignAddress ( Datatype dt,
const PrototypePieces proto,
int4  pos,
TypeFactory tlist,
vector< int4 > &  status,
ParameterPieces res 
) const
virtual

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
Parameters
dtis the data-type of the parameter or return value
protois the high-level description of the function prototype
posis the position of the parameter (pos>=0) or return storage (pos=-1)
tlistis a data-type factory for (possibly) transforming the data-type
statusis the resource consumption array
reswill hold the resulting description of the parameter
Returns
the response code

Implements ghidra::AssignAction.

References retCode.

◆ clone()

virtual AssignAction * ghidra::HiddenReturnAssign::clone ( const ParamListStandard newResource) const
inlinevirtual

Make a copy of this action.

Parameters
newResourceis the new resource object that will own the clone
Returns
the newly allocated copy

Implements ghidra::AssignAction.

References ghidra::AssignAction::hiddenret_specialreg_void, HiddenReturnAssign(), and retCode.

◆ decode()

void ghidra::HiddenReturnAssign::decode ( Decoder decoder)
virtual

Configure any details of how this action should behave from the stream.

Parameters
decoderis the given stream decoder

Implements ghidra::AssignAction.

References ghidra::Decoder::closeElement(), ghidra::Decoder::getNextAttributeId(), ghidra::AssignAction::hiddenret_specialreg, ghidra::AssignAction::hiddenret_specialreg_void, ghidra::Decoder::openElement(), and retCode.


The documentation for this class was generated from the following files: