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 voidvisitBinOp(JitBinOp binOp) Visit aJitBinOpdefault voidvisitBranchIndOp(JitBranchIndOp branchIndOp) Visit aJitBranchIndOpdefault voidvisitBranchOp(JitBranchOp branchOp) Visit aJitBranchOpdefault voidvisitCallOtherDefOp(JitCallOtherDefOp otherOp) Visit aJitCallOtherDefOpdefault voidVisit aJitCallOtherMissingOpdefault voidvisitCallOtherOp(JitCallOtherOp otherOp) Visit aJitCallOtherOpdefault voidvisitCatenateOp(JitCatenateOp catOp) Visit aJitCatenateOpdefault voidvisitCBranchOp(JitCBranchOp cBranchOp) Visit aJitCBranchOpdefault voidvisitConstVal(JitConstVal constVal) Visit aJitConstValdefault voidvisitDirectMemoryVar(JitDirectMemoryVar dirMemVar) Visit aJitDirectMemoryVardefault voidvisitFailVal(JitFailVal failVal) Visit aJitFailValdefault voidvisitIndirectMemoryVar(JitIndirectMemoryVar indMemVar) Visit aJitIndirectMemoryVardefault voidvisitInputVar(JitInputVar inputVar) Visit aJitInputVardefault voidvisitLoadOp(JitLoadOp loadOp) Visit aJitLoadOpdefault voidvisitMissingVar(JitMissingVar missingVar) Visit aJitMissingVardefault voidvisitNopOp(JitNopOp nopOp) Visit aJitNopOpdefault voidVisit an op nodedefault voidvisitOutVar(JitOutVar outVar) Visit aJitOutVardefault voidvisitPhiOp(JitPhiOp phiOp) Visit aJitPhiOpdefault voidvisitStoreOp(JitStoreOp storeOp) Visit aJitStoreOpdefault voidvisitSubPieceOp(JitSynthSubPieceOp pieceOp) Visit aJitSynthSubPieceOpdefault voidvisitUnimplementedOp(JitUnimplementedOp unimplOp) Visit aJitUnimplementedOpdefault voidVisit aJitUnOpdefault voidVisit aJitValdefault voidVisit aJitVar
-
Method Details
-
visitOp
Visit an op nodeThe default implementation dispatches this to the type-specific
visitmethod.- 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 aJitValThe default implementation dispatches this to the type-specific
visitmethod.- Parameters:
v- the value visited
-
visitVar
Visit aJitVarThe default implementation dispatches this to the type-specific
visitmethod.- Parameters:
v- the variable visited
-
visitConstVal
Visit aJitConstVal- Parameters:
constVal- the value visited
-
visitFailVal
Visit aJitFailVal- Parameters:
failVal- the value visited
-
visitDirectMemoryVar
Visit aJitDirectMemoryVar- Parameters:
dirMemVar- the variable visited
-
visitIndirectMemoryVar
Visit aJitIndirectMemoryVarNOTE: 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
-