Package ghidra.pcode.emu.jit.analysis
Interface JitOpVisitor
- All Known Subinterfaces:
JitOpUpwardVisitor
- All Known Implementing Classes:
JitDataFlowModel.GraphvizExporter
,JitDataFlowModel.ValCollector
public interface JitOpVisitor
A visitor for traversing the use-def graph
The default implementations here do nothing other than discern the type of an op and variable and
dispatch the invocations appropriately. To traverse the graph upward, consider
JitOpUpwardVisitor
. Note no "downward" visitor is currently provided, because it was not
needed.
-
Method Summary
Modifier and TypeMethodDescriptiondefault void
visitBinOp
(JitBinOp binOp) Visit aJitBinOp
default void
visitBranchIndOp
(JitBranchIndOp branchIndOp) Visit aJitBranchIndOp
default void
visitBranchOp
(JitBranchOp branchOp) Visit aJitBranchOp
default void
visitCallOtherDefOp
(JitCallOtherDefOp otherOp) Visit aJitCallOtherDefOp
default void
Visit aJitCallOtherMissingOp
default void
visitCallOtherOp
(JitCallOtherOp otherOp) Visit aJitCallOtherOp
default void
visitCatenateOp
(JitCatenateOp catOp) Visit aJitCatenateOp
default void
visitCBranchOp
(JitCBranchOp cBranchOp) Visit aJitCBranchOp
default void
visitConstVal
(JitConstVal constVal) Visit aJitConstVal
default void
visitDirectMemoryVar
(JitDirectMemoryVar dirMemVar) Visit aJitDirectMemoryVar
default void
visitIndirectMemoryVar
(JitIndirectMemoryVar indMemVar) Visit aJitIndirectMemoryVar
default void
visitInputVar
(JitInputVar inputVar) Visit aJitInputVar
default void
visitLoadOp
(JitLoadOp loadOp) Visit aJitLoadOp
default void
visitMissingVar
(JitMissingVar missingVar) Visit aJitMissingVar
default void
visitNopOp
(JitNopOp nopOp) Visit aJitNopOp
default void
Visit an op nodedefault void
visitOutVar
(JitOutVar outVar) Visit aJitOutVar
default void
visitPhiOp
(JitPhiOp phiOp) Visit aJitPhiOp
default void
visitStoreOp
(JitStoreOp storeOp) Visit aJitStoreOp
default void
visitSubPieceOp
(JitSynthSubPieceOp pieceOp) Visit aJitSynthSubPieceOp
default void
visitUnimplementedOp
(JitUnimplementedOp unimplOp) Visit aJitUnimplementedOp
default void
Visit aJitUnOp
default void
Visit aJitVal
default void
Visit aJitVar
-
Method Details
-
visitOp
Visit an op nodeThe default implementation dispatches this to the type-specific
visit
method.- Parameters:
op
- the op visited
-
visitUnOp
Visit aJitUnOp
- Parameters:
unOp
- the op visited
-
visitBinOp
Visit aJitBinOp
- Parameters:
binOp
- the op visited
-
visitStoreOp
Visit aJitStoreOp
- Parameters:
storeOp
- the op visited
-
visitLoadOp
Visit aJitLoadOp
- Parameters:
loadOp
- the op visited
-
visitCallOtherOp
Visit aJitCallOtherOp
- Parameters:
otherOp
- the op visited
-
visitCallOtherDefOp
Visit aJitCallOtherDefOp
- Parameters:
otherOp
- the op visited
-
visitCallOtherMissingOp
Visit aJitCallOtherMissingOp
- Parameters:
otherOp
- the op visited
-
visitCatenateOp
Visit aJitCatenateOp
- Parameters:
catOp
- the op visited
-
visitPhiOp
Visit aJitPhiOp
- Parameters:
phiOp
- the op visited
-
visitSubPieceOp
Visit aJitSynthSubPieceOp
- Parameters:
pieceOp
- the op visited
-
visitBranchOp
Visit aJitBranchOp
- Parameters:
branchOp
- the op visited
-
visitCBranchOp
Visit aJitCBranchOp
- Parameters:
cBranchOp
- the op visited
-
visitBranchIndOp
Visit aJitBranchIndOp
- Parameters:
branchIndOp
- the op visited
-
visitUnimplementedOp
Visit aJitUnimplementedOp
- Parameters:
unimplOp
- the op visited
-
visitNopOp
Visit aJitNopOp
- Parameters:
nopOp
- the op visited
-
visitVal
Visit aJitVal
The default implementation dispatches this to the type-specific
visit
method.- Parameters:
v
- the value visited
-
visitVar
Visit aJitVar
The default implementation dispatches this to the type-specific
visit
method.- Parameters:
v
- the variable visited
-
visitConstVal
Visit aJitConstVal
- Parameters:
constVal
- the variable visited
-
visitDirectMemoryVar
Visit aJitDirectMemoryVar
- Parameters:
dirMemVar
- the variable visited
-
visitIndirectMemoryVar
Visit aJitIndirectMemoryVar
NOTE: These should not ordinarily appear in the use-def graph. There is only the one
JitIndirectMemoryVar.INSTANCE
, and it's used as a temporary dummy. Indirect memory access is instead modeled by theJitLoadOp
.- Parameters:
indMemVar
- the variable visited
-
visitInputVar
Visit aJitInputVar
- Parameters:
inputVar
- the variable visited
-
visitMissingVar
Visit aJitMissingVar
- Parameters:
missingVar
- the variable visited
-
visitOutVar
Visit aJitOutVar
- Parameters:
outVar
- the variable visited
-