Class ContextDatabase
- java.lang.Object
-
- ghidra.pcodeCPort.globalcontext.ContextDatabase
-
public abstract class ContextDatabase extends java.lang.Object
This is the interface and implementation for a database of memory locations which should be treated likeants. These come in two flavors:1) Low-level context variables These can affect instruction decoding. These can be as small as a single bit and need to be defined in the sleigh module (so that sleigh knows how they effect disassembly). These variables are not mapped to normal memory locations with a space and offset. (Although they often have a corresponding embedding into a normal memory location) The model to keep in mind is special bitfields within a control register.
2) High-level tracked variables These are normal memory locations that are to be treated asants across some range of code. These are normally some register that is being kept track of be the compiler outside the domain of normal local and global variables. They have a specific value established by the compiler coming in to a function but are not supposed to be interpreted as a high-level variable. Typical examples are the String instruction direction flag and segment registers. These are all interpreted as aant value at the start of a function, but the function can recycle the memory location for other calculations once theant has been used.
-
-
Constructor Summary
Constructors Constructor Description ContextDatabase()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract int[]
createContext(Address addr)
abstract VectorSTL<TrackedContext>
createSet(Address addr1, Address addr2)
void
dispose()
abstract int[]
getContext(Address addr)
abstract int[]
getContext(Address addr, MutableLong first, MutableLong last)
abstract int
getContextSize()
abstract int[]
getDefaultValue()
int
getDefaultValue(java.lang.String nm)
abstract void
getRegion(VectorSTL<int[]> res, Address addr1, Address addr2)
abstract VectorSTL<TrackedContext>
getTrackedDefault()
abstract VectorSTL<TrackedContext>
getTrackedSet(Address addr)
long
getTrackedValue(VarnodeData mem, Address point)
For a particular tracked memory location, get the value at a particular point.abstract ContextBitRange
getVariable(java.lang.String nm)
int
getVariable(java.lang.String nm, Address addr)
abstract void
registerVariable(java.lang.String nm, int sbit, int ebit)
abstract void
restoreFromSpec(org.jdom.Element el, Translate translate)
static void
restoreTracked(org.jdom.Element el, Translate trans, VectorSTL<TrackedContext> vec)
abstract void
restoreXml(org.jdom.Element el, Translate translate)
protected void
saveTracked(java.io.PrintStream s, Address addr, VectorSTL<TrackedContext> vec)
abstract void
saveXml(java.io.PrintStream s)
void
setContextRange(Address addr, int num, int mask, int value)
Set specific bits in contextvoid
setVariable(java.lang.String nm, Address addr, int value)
Set value of context register, starting at addrvoid
setVariableDefault(java.lang.String nm, int val)
void
setVariableRegion(java.lang.String nm, Address begad, Address endad, int value)
Set value of context register between begad and endad
-
-
-
Method Detail
-
dispose
public void dispose()
-
getContextSize
public abstract int getContextSize()
-
registerVariable
public abstract void registerVariable(java.lang.String nm, int sbit, int ebit)
-
getVariable
public abstract ContextBitRange getVariable(java.lang.String nm)
-
getContext
public abstract int[] getContext(Address addr)
-
getContext
public abstract int[] getContext(Address addr, MutableLong first, MutableLong last)
-
getDefaultValue
public abstract int[] getDefaultValue()
-
createContext
public abstract int[] createContext(Address addr)
-
getTrackedDefault
public abstract VectorSTL<TrackedContext> getTrackedDefault()
-
getTrackedSet
public abstract VectorSTL<TrackedContext> getTrackedSet(Address addr)
-
createSet
public abstract VectorSTL<TrackedContext> createSet(Address addr1, Address addr2)
-
saveXml
public abstract void saveXml(java.io.PrintStream s)
-
restoreXml
public abstract void restoreXml(org.jdom.Element el, Translate translate)
-
restoreFromSpec
public abstract void restoreFromSpec(org.jdom.Element el, Translate translate)
-
saveTracked
protected void saveTracked(java.io.PrintStream s, Address addr, VectorSTL<TrackedContext> vec)
-
setVariableDefault
public void setVariableDefault(java.lang.String nm, int val)
-
getDefaultValue
public int getDefaultValue(java.lang.String nm)
-
setVariable
public void setVariable(java.lang.String nm, Address addr, int value)
Set value of context register, starting at addr
-
getVariable
public int getVariable(java.lang.String nm, Address addr)
-
setContextRange
public void setContextRange(Address addr, int num, int mask, int value)
Set specific bits in context
-
setVariableRegion
public void setVariableRegion(java.lang.String nm, Address begad, Address endad, int value)
Set value of context register between begad and endad
-
getTrackedValue
public long getTrackedValue(VarnodeData mem, Address point)
For a particular tracked memory location, get the value at a particular point.
-
restoreTracked
public static void restoreTracked(org.jdom.Element el, Translate trans, VectorSTL<TrackedContext> vec)
-
-