Package ghidra.program.model.lang
Class ParamListStandard
- java.lang.Object
-
- ghidra.program.model.lang.ParamListStandard
-
- All Implemented Interfaces:
ParamList
- Direct Known Subclasses:
ParamListRegisterOut
public class ParamListStandard extends java.lang.Object implements ParamList
Standard analysis for parameter lists
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface ghidra.program.model.lang.ParamList
ParamList.WithSlotRec
-
-
Field Summary
Fields Modifier and Type Field Description protected ParamEntry[]entryprotected intnumgroupprotected intpointermaxprotected intresourceTwoStartprotected AddressSpacespacebaseprotected booleanthisbeforeret
-
Constructor Summary
Constructors Constructor Description ParamListStandard()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected VariableStorageassignAddress(Program program, DataType tp, int[] status, boolean ishiddenret, boolean isindirect)Assign next available memory chunk to typevoidassignMap(Program prog, DataType[] proto, java.util.ArrayList<VariableStorage> res, boolean addAutoParams)Given a list of datatypes, calculate the storage locations used for passing those datatypesbooleanequals(java.lang.Object obj)VariableStorage[]getPotentialRegisterStorage(Program prog)Get a list of all parameter storage locations consisting of a single registerintgetStackParameterAlignment()Return the amount of alignment used for parameters passed on the stack, or -1 if there are no stack paramsjava.lang.LonggetStackParameterOffset()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 stackinthashCode()booleanisThisBeforeRetPointer()booleanpossibleParamWithSlot(Address loc, int size, ParamList.WithSlotRec res)Determine if a particular address range is a possible parameter, and if so what slot(s) it occupiesvoidrestoreXml(XmlPullParser parser, CompilerSpec cspec)voidsaveXml(java.lang.StringBuilder buffer, boolean isInput)
-
-
-
Field Detail
-
numgroup
protected int numgroup
-
pointermax
protected int pointermax
-
thisbeforeret
protected boolean thisbeforeret
-
resourceTwoStart
protected int resourceTwoStart
-
entry
protected ParamEntry[] entry
-
spacebase
protected AddressSpace spacebase
-
-
Method Detail
-
assignAddress
protected VariableStorage assignAddress(Program program, DataType tp, int[] status, boolean ishiddenret, boolean isindirect)
Assign next available memory chunk to type- Parameters:
program- is the Programtp- type being assigned storagestatus- status from previous assignmentsishiddenret- is true if the parameter is a hidden return valueisindirect- is true if parameter is really a pointer to the real parameter value- Returns:
- Address of assigned memory chunk
-
assignMap
public void assignMap(Program prog, DataType[] proto, java.util.ArrayList<VariableStorage> res, boolean addAutoParams)
Description copied from interface:ParamListGiven a list of datatypes, calculate the storage locations used for passing those datatypes
-
getPotentialRegisterStorage
public VariableStorage[] getPotentialRegisterStorage(Program prog)
Description copied from interface:ParamListGet a list of all parameter storage locations consisting of a single register- Specified by:
getPotentialRegisterStoragein interfaceParamList- Parameters:
prog- is the controlling program- Returns:
- an array of VariableStorage
-
saveXml
public void saveXml(java.lang.StringBuilder buffer, boolean isInput)
-
restoreXml
public void restoreXml(XmlPullParser parser, CompilerSpec cspec) throws XmlParseException
- Specified by:
restoreXmlin interfaceParamList- Throws:
XmlParseException
-
getStackParameterAlignment
public int getStackParameterAlignment()
Description copied from interface:ParamListReturn the amount of alignment used for parameters passed on the stack, or -1 if there are no stack params- Specified by:
getStackParameterAlignmentin interfaceParamList- Returns:
- the alignment
-
getStackParameterOffset
public java.lang.Long getStackParameterOffset()
Description copied from interface:ParamListFind 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- Specified by:
getStackParameterOffsetin interfaceParamList- Returns:
- the boundary offset
-
possibleParamWithSlot
public boolean possibleParamWithSlot(Address loc, int size, ParamList.WithSlotRec res)
Description copied from interface:ParamListDetermine if a particular address range is a possible parameter, and if so what slot(s) it occupies- Specified by:
possibleParamWithSlotin interfaceParamList- 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
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
isThisBeforeRetPointer
public boolean isThisBeforeRetPointer()
- Specified by:
isThisBeforeRetPointerin interfaceParamList
-
-