Package ghidra.program.model.pcode
Class HighVariable
java.lang.Object
ghidra.program.model.pcode.HighVariable
- Direct Known Subclasses:
HighConstant
,HighGlobal
,HighLocal
,HighOther
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
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
HighVariable
(HighFunction func) Constructor for use with restoreXmlprotected
HighVariable
(String nm, DataType tp, Varnode rep, Varnode[] inst, HighFunction func) -
Method Summary
Modifier and TypeMethodDescriptionvoid
attachInstances
(Varnode[] inst, Varnode rep) Attach an instance or additional location the variable can be found in.abstract void
Decode this HighVariable from a<high>
element in the streamprotected void
decodeInstances
(Decoder decoder) Decode the data-type and the Varnode instances of this HighVariable.Varnode[]
A variable can reside in different locations at various times.getName()
int
Get the offset of this variable into its containing HighSymbol.int
getSize()
abstract HighSymbol
Retrieve any underlying HighSymbolboolean
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
Link Varnodes directly to this HighVariable
-
Field Details
-
name
-
type
-
represent
-
instances
-
offset
protected int offset -
function
-
-
Constructor Details
-
HighVariable
Constructor for use with restoreXml- Parameters:
func
- is the HighFunction this variable belongs to
-
HighVariable
-
-
Method Details
-
setHighOnInstances
protected void setHighOnInstances()Link Varnodes directly to this HighVariable -
getHighFunction
- Returns:
- the high function associated with this variable.
-
getName
- Returns:
- get the name of the variable
-
getSize
public int getSize()- Returns:
- get the size of the variable
-
getDataType
- Returns:
- get the data type attached to the variable
-
getRepresentative
- Returns:
- get the varnode that represents this variable
-
getInstances
A variable can reside in different locations at various times. Get all the instances of the variable.- Returns:
- all the variables instances
-
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
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.
-
decodeInstances
Decode the data-type and the Varnode instances of this HighVariable. The "representative" Varnode is also populated.- Parameters:
decoder
- is the stream decoder- Throws:
DecoderException
- for invalid encodings
-
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
-
decode
Decode this HighVariable from a<high>
element in the stream- Parameters:
decoder
- is the stream decoder- Throws:
DecoderException
- for invalid encodings
-