Package ghidra.program.model.lang
Interface ParamList
- All Known Implementing Classes:
ParamListRegisterOut
,ParamListStandard
,ParamListStandardOut
public interface ParamList
A group of ParamEntry that form a complete set for passing parameters (in one direction)
-
Nested Class Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
assignMap
(PrototypePieces proto, DataTypeManager dtManage, ArrayList<ParameterPieces> res, boolean addAutoParams) Given a list of datatypes, calculate the storage locations used for passing those data-typesvoid
Get a list of all parameter storage locations consisting of a single registerGet the address space associated with any stack based parameters in this list.int
Return the amount of alignment used for parameters passed on the stack, or -1 if there are no stack paramsFind the boundary offset that separates parameters on the stack from other local variables This is usually the address of the first stack parameter, but if the stack grows positive, this is the first address AFTER the parameters on the stackboolean
isEquivalent
(ParamList obj) Determine if this ParmList is equivalent to another instanceboolean
Return true if the this pointer occurs before an indirect return pointer The automatic parameters: this parameter and the hidden return value pointer both tend to be allocated from the initial general purpose registers reserved for parameter passing.boolean
possibleParamWithSlot
(Address loc, int size, ParamList.WithSlotRec res) Determine if a particular address range is a possible parameter, and if so what slot(s) it occupiesvoid
restoreXml
(XmlPullParser parser, CompilerSpec cspec)
-
Method Details
-
assignMap
void assignMap(PrototypePieces proto, DataTypeManager dtManage, ArrayList<ParameterPieces> res, boolean addAutoParams) Given a list of datatypes, calculate the storage locations used for passing those data-types- Parameters:
proto
- is the list of datatypesdtManage
- is the data-type managerres
- is the vector for holding the storage locations and other parameter propertiesaddAutoParams
- if true add/process auto-parameters
-
encode
- Throws:
IOException
-
restoreXml
- Throws:
XmlParseException
-
getPotentialRegisterStorage
Get a list of all parameter storage locations consisting of a single register- Parameters:
prog
- is the controlling program- Returns:
- an array of VariableStorage
-
getStackParameterAlignment
int getStackParameterAlignment()Return the amount of alignment used for parameters passed on the stack, or -1 if there are no stack params- Returns:
- the alignment
-
getStackParameterOffset
Long getStackParameterOffset()Find the boundary offset that separates parameters on the stack from other local variables This is usually the address of the first stack parameter, but if the stack grows positive, this is the first address AFTER the parameters on the stack- Returns:
- the boundary offset
-
possibleParamWithSlot
Determine if a particular address range is a possible parameter, and if so what slot(s) it occupies- Parameters:
loc
- is the starting address of the rangesize
- is the size of the range in bytesres
- holds the resulting slot and slotsize- Returns:
- true if the range is a possible parameter
-
getSpacebase
AddressSpace getSpacebase()Get the address space associated with any stack based parameters in this list.- Returns:
- the stack address space, if this models parameters passed on the stack, null otherwise
-
isThisBeforeRetPointer
boolean isThisBeforeRetPointer()Return true if the this pointer occurs before an indirect return pointer The automatic parameters: this parameter and the hidden return value pointer both tend to be allocated from the initial general purpose registers reserved for parameter passing. This method returns true if the this parameter is allocated first.- Returns:
- false if the hidden return value pointer is allocated first
-
isEquivalent
Determine if this ParmList is equivalent to another instance- Parameters:
obj
- is the other instance- Returns:
- true if they are equivalent
-