Package ghidra.program.model.pcode
Class HighVariable
- java.lang.Object
-
- ghidra.program.model.pcode.HighVariable
-
- Direct Known Subclasses:
HighConstant
,HighGlobal
,HighLocal
,HighOther
public abstract class HighVariable extends java.lang.Object
A High-level variable (as in a high-level language like C/C++) built out of Varnodes (low-level variables). This is a base-class
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
HighVariable(HighFunction func)
Constructor for use with restoreXmlprotected
HighVariable(java.lang.String nm, DataType tp, Varnode rep, Varnode[] inst, HighFunction func)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
attachInstances(Varnode[] inst, Varnode rep)
Attach an instance or additional location the variable can be found in.DataType
getDataType()
HighFunction
getHighFunction()
Varnode[]
getInstances()
A variable can reside in different locations at various times.java.lang.String
getName()
int
getOffset()
Get the offset of this variable into its containing HighSymbol.Varnode
getRepresentative()
int
getSize()
abstract HighSymbol
getSymbol()
Retrieve any underlying HighSymbolboolean
requiresDynamicStorage()
Return true in when the HighVariable should be recorded (in the database) using dynamic storage rather than using the actual address space and offset of the representative varnode.protected void
restoreInstances(XmlPullParser parser, XmlElement el)
Restore the data-type and the Varnode instances of this HighVariable.abstract void
restoreXml(XmlPullParser parser)
Restore this HighVariable from a<high>
XML tagprotected void
setHighOnInstances()
Link Varnodes directly to this HighVariable
-
-
-
Field Detail
-
name
protected java.lang.String name
-
type
protected DataType type
-
represent
protected Varnode represent
-
instances
protected Varnode[] instances
-
offset
protected int offset
-
function
protected HighFunction function
-
-
Constructor Detail
-
HighVariable
protected HighVariable(HighFunction func)
Constructor for use with restoreXml- Parameters:
func
- is the HighFunction this variable belongs to
-
HighVariable
protected HighVariable(java.lang.String nm, DataType tp, Varnode rep, Varnode[] inst, HighFunction func)
-
-
Method Detail
-
setHighOnInstances
protected void setHighOnInstances()
Link Varnodes directly to this HighVariable
-
getHighFunction
public HighFunction getHighFunction()
- Returns:
- the high function associated with this variable.
-
getName
public java.lang.String getName()
- Returns:
- get the name of the variable
-
getSize
public int getSize()
- Returns:
- get the size of the variable
-
getDataType
public DataType getDataType()
- Returns:
- get the data type attached to the variable
-
getRepresentative
public Varnode getRepresentative()
- Returns:
- get the varnode that represents this variable
-
getInstances
public Varnode[] getInstances()
A variable can reside in different locations at various times. Get all the instances of the variable.- Returns:
- all the variables instances
-
getSymbol
public abstract HighSymbol getSymbol()
Retrieve any underlying HighSymbol- Returns:
- the HighSymbol
-
getOffset
public int getOffset()
Get the offset of this variable into its containing HighSymbol. If the value is -1, this indicates that this HighVariable matches the size and storage of the symbol.- Returns:
- the offset
-
attachInstances
public void attachInstances(Varnode[] inst, Varnode rep)
Attach an instance or additional location the variable can be found in.- Parameters:
inst
- varnode where variable can reside.rep
- location that variable comes into scope.
-
restoreInstances
protected void restoreInstances(XmlPullParser parser, XmlElement el) throws PcodeXMLException
Restore the data-type and the Varnode instances of this HighVariable. The "representative" Varnode is also populated.- Parameters:
parser
- is the XML streamel
- is the root<high>
tag- Throws:
PcodeXMLException
- if the XML is not valid
-
requiresDynamicStorage
public boolean requiresDynamicStorage()
Return true in when the HighVariable should be recorded (in the database) using dynamic storage rather than using the actual address space and offset of the representative varnode. Dynamic storage is typically needed if the actual storage is ephemeral (in the unique space).- Returns:
- true if this needs dynamic storage
-
restoreXml
public abstract void restoreXml(XmlPullParser parser) throws PcodeXMLException
Restore this HighVariable from a<high>
XML tag- Parameters:
parser
- is the XML stream- Throws:
PcodeXMLException
- if the XML is not valid
-
-