Class JitDataFlowState.MiniDFState
- Enclosing class:
JitDataFlowState
JitCallOtherOpIf
.-
Method Summary
Modifier and TypeMethodDescriptioncopy()
Copy this mini stateprotected void
doClear
(NavigableMap<Long, JitVal> map, Varnode varnode) Clear all definition entries in the given per-space map for the given varnodedoGetDefinitions
(NavigableMap<Long, JitVal> map, AddressSpace space, long offset, int size) The implementation ofgetDefinitions(AddressSpace, long, int)
for a given address spaceprotected void
The implementation ofset(Varnode, JitVal)
for a given address spaceprotected static long
Compute the upper (exclusive) offset of a given definition entrygeneratePhis
(List<JitVal> defs, Collection<JitPhiOp> phiQueue) Replace missing variables with phi nodes, mutating the given list in placegetDefinitions
(AddressSpace space, long offset, int size) Get an ordered list of all values involved in the latest definition of the given varnode.getDefinitions
(Register register) Get an ordered list of all values involved in the latest definition of the given varnode.getDefinitions
(Varnode varnode) Get an ordered list of all values involved in the latest definition of the given varnode.Get the value of the given varnodevoid
Set one or more definition entries in the given map for the given varnode to the given value
-
Method Details
-
endOf
Compute the upper (exclusive) offset of a given definition entry- Parameters:
entry
- the entry- Returns:
- the upper offset, exclusive
-
set
Set one or more definition entries in the given map for the given varnode to the given valueOrdinary, this just sets the one varnode to the given value; however, if the given value is the output of a
catenation
, then each input part is entered into the map separately, and the synthetic catenation dropped. The behavior avoids nested catenations.- Parameters:
varnode
- the varnodeval
- the value
-
getDefinitions
Get an ordered list of all values involved in the latest definition of the given varnode.In the simplest case, the list consists of exactly one SSA variable whose varnode exactly matches that requested. In other cases, e.g., when only a subregister is defined, the list may have several entries, some of which may be
missing
.The list is ordered according to machine endianness. That is for little endian, the values are ordered from least to most significant parts of the varnode defined. This is congruent with how
JitDataFlowArithmetic.catenate(Varnode, List)
expects parts to be listed.- Parameters:
space
- the address space of the varnodeoffset
- the offset of the varnodesize
- the size in bytes of the varnode- Returns:
- the list of values
-
getDefinitions
Get an ordered list of all values involved in the latest definition of the given varnode.- Parameters:
varnode
- the varnode whose definitions to retrieve- Returns:
- the list of values
- See Also:
-
getDefinitions
Get an ordered list of all values involved in the latest definition of the given varnode.- Parameters:
register
- the register whose definitions to retrieve- Returns:
- the list of values
- See Also:
-
generatePhis
Replace missing variables with phi nodes, mutating the given list in place- Parameters:
defs
- the definitions- Returns:
- the same list, modified
-
getVar
Get the value of the given varnodeThis is the implementation of
JitDataFlowState.getVar(AddressSpace, JitVal, int, boolean, Reason)
, but only for uniques and registers.- Parameters:
varnode
- the varnode- Returns:
- the value
-
copy
Copy this mini state- Returns:
- the copy
-