public class DexCodeNode extends DexCodeVisitor
Modifier and Type | Field and Description |
---|---|
DexDebugNode |
debugNode |
java.util.List<DexStmtNode> |
stmts |
int |
totalRegister |
java.util.List<TryCatchNode> |
tryStmts |
visitor
Constructor and Description |
---|
DexCodeNode() |
DexCodeNode(DexCodeVisitor visitor) |
Modifier and Type | Method and Description |
---|---|
void |
accept(DexCodeVisitor v) |
void |
accept(DexMethodVisitor v) |
protected void |
add(DexStmtNode stmt) |
void |
visitConstStmt(Op op,
int ra,
java.lang.Object value)
CONST * CONST_WIDE * CONST_STRING * CONST_CLASS *
|
DexDebugVisitor |
visitDebug() |
void |
visitFieldStmt(Op op,
int a,
int b,
Field field)
OP_IGETX a,b field
OP_IPUTX a,b field
OP_SGETX a field
OP_SPUTX a field
|
void |
visitFillArrayDataStmt(Op op,
int ra,
java.lang.Object array) |
void |
visitFilledNewArrayStmt(Op op,
int[] args,
java.lang.String type)
OP_FILLED_NEW_ARRAY
|
void |
visitJumpStmt(Op op,
int a,
int b,
DexLabel label)
OP_IF_EQ
OP_IF_NE
OP_IF_LT
OP_IF_GE
OP_IF_GT
OP_IF_LE
OP_GOTO
OP_IF_EQZ
OP_IF_NEZ
OP_IF_LTZ
OP_IF_GEZ
OP_IF_GTZ
OP_IF_LEZ
|
void |
visitLabel(DexLabel label) |
void |
visitMethodStmt(Op op,
int[] args,
Method method)
OP_INVOKE_VIRTUAL
OP_INVOKE_SUPER
OP_INVOKE_DIRECT
OP_INVOKE_STATIC
OP_INVOKE_INTERFACE
|
void |
visitMethodStmt(Op op,
int[] args,
Method bsm,
Proto proto)
OP_INVOKE_POLYMORPHIC
|
void |
visitMethodStmt(Op op,
int[] args,
java.lang.String name,
Proto proto,
MethodHandle bsm,
java.lang.Object... bsmArgs)
OP_INVOKE_CUSTOM
|
void |
visitPackedSwitchStmt(Op op,
int aA,
int first_case,
DexLabel[] labels) |
void |
visitRegister(int total) |
void |
visitSparseSwitchStmt(Op op,
int ra,
int[] cases,
DexLabel[] labels) |
void |
visitStmt0R(Op op)
|
void |
visitStmt1R(Op op,
int reg)
OP_RETURN_X
OP_THROW_X
OP_MONITOR_ENTER
OP_MONITOR_EXIT
OP_MOVE_RESULT_X
OP_MOVE_EXCEPTION_X
|
void |
visitStmt2R(Op op,
int a,
int b)
OP_MOVE*
a = a X b
OP_ARRAY_LENGTH
a=Xb
X_TO_Y
|
void |
visitStmt2R1N(Op op,
int distReg,
int srcReg,
int content)
OP_X_INT_LIT8
|
void |
visitStmt3R(Op op,
int a,
int b,
int c)
OP_ADD
OP_SUB
OP_MUL
OP_DIV
OP_REM
OP_AND
OP_OR
OP_XOR
OP_SHL
OP_SHR
OP_USHR
OP_CMPL
OP_CMPG
OP_CMP
OP_AGETX
OP_APUTX
|
void |
visitTryCatch(DexLabel start,
DexLabel end,
DexLabel[] handler,
java.lang.String[] type) |
void |
visitTypeStmt(Op op,
int a,
int b,
java.lang.String type)
OP_INSTANCE_OF
OP_NEW_ARRAY
OP_CHECK_CAST
OP_NEW_INSTANCE
|
visitEnd
public java.util.List<DexStmtNode> stmts
public java.util.List<TryCatchNode> tryStmts
public DexDebugNode debugNode
public int totalRegister
public DexCodeNode()
public DexCodeNode(DexCodeVisitor visitor)
public void accept(DexCodeVisitor v)
public void accept(DexMethodVisitor v)
protected void add(DexStmtNode stmt)
public void visitConstStmt(Op op, int ra, java.lang.Object value)
DexCodeVisitor
CONST * CONST_WIDE * CONST_STRING * CONST_CLASS *
visitConstStmt
in class DexCodeVisitor
value
- int/long/typepublic void visitFillArrayDataStmt(Op op, int ra, java.lang.Object array)
visitFillArrayDataStmt
in class DexCodeVisitor
public void visitFieldStmt(Op op, int a, int b, Field field)
DexCodeVisitor
OP_IGETX a,b field OP_IPUTX a,b field OP_SGETX a field OP_SPUTX a field
visitFieldStmt
in class DexCodeVisitor
public void visitFilledNewArrayStmt(Op op, int[] args, java.lang.String type)
DexCodeVisitor
OP_FILLED_NEW_ARRAY
visitFilledNewArrayStmt
in class DexCodeVisitor
public void visitJumpStmt(Op op, int a, int b, DexLabel label)
DexCodeVisitor
OP_IF_EQ OP_IF_NE OP_IF_LT OP_IF_GE OP_IF_GT OP_IF_LE OP_GOTO OP_IF_EQZ OP_IF_NEZ OP_IF_LTZ OP_IF_GEZ OP_IF_GTZ OP_IF_LEZ
visitJumpStmt
in class DexCodeVisitor
public void visitLabel(DexLabel label)
visitLabel
in class DexCodeVisitor
public void visitMethodStmt(Op op, int[] args, Method method)
DexCodeVisitor
OP_INVOKE_VIRTUAL OP_INVOKE_SUPER OP_INVOKE_DIRECT OP_INVOKE_STATIC OP_INVOKE_INTERFACE
visitMethodStmt
in class DexCodeVisitor
public void visitMethodStmt(Op op, int[] args, java.lang.String name, Proto proto, MethodHandle bsm, java.lang.Object... bsmArgs)
DexCodeVisitor
OP_INVOKE_CUSTOM
visitMethodStmt
in class DexCodeVisitor
public void visitMethodStmt(Op op, int[] args, Method bsm, Proto proto)
DexCodeVisitor
OP_INVOKE_POLYMORPHIC
visitMethodStmt
in class DexCodeVisitor
public void visitPackedSwitchStmt(Op op, int aA, int first_case, DexLabel[] labels)
visitPackedSwitchStmt
in class DexCodeVisitor
public void visitRegister(int total)
visitRegister
in class DexCodeVisitor
public void visitSparseSwitchStmt(Op op, int ra, int[] cases, DexLabel[] labels)
visitSparseSwitchStmt
in class DexCodeVisitor
public void visitStmt0R(Op op)
DexCodeVisitor
visitStmt0R
in class DexCodeVisitor
public void visitStmt1R(Op op, int reg)
DexCodeVisitor
OP_RETURN_X OP_THROW_X OP_MONITOR_ENTER OP_MONITOR_EXIT OP_MOVE_RESULT_X OP_MOVE_EXCEPTION_X
visitStmt1R
in class DexCodeVisitor
public void visitStmt2R(Op op, int a, int b)
DexCodeVisitor
OP_MOVE* a = a X b OP_ARRAY_LENGTH a=Xb X_TO_Y
visitStmt2R
in class DexCodeVisitor
public void visitStmt2R1N(Op op, int distReg, int srcReg, int content)
DexCodeVisitor
OP_X_INT_LIT8
visitStmt2R1N
in class DexCodeVisitor
public void visitStmt3R(Op op, int a, int b, int c)
DexCodeVisitor
OP_ADD OP_SUB OP_MUL OP_DIV OP_REM OP_AND OP_OR OP_XOR OP_SHL OP_SHR OP_USHR OP_CMPL OP_CMPG OP_CMP OP_AGETX OP_APUTX
visitStmt3R
in class DexCodeVisitor
public void visitTryCatch(DexLabel start, DexLabel end, DexLabel[] handler, java.lang.String[] type)
visitTryCatch
in class DexCodeVisitor
public void visitTypeStmt(Op op, int a, int b, java.lang.String type)
DexCodeVisitor
OP_INSTANCE_OF OP_NEW_ARRAY OP_CHECK_CAST OP_NEW_INSTANCE
visitTypeStmt
in class DexCodeVisitor
public DexDebugVisitor visitDebug()
visitDebug
in class DexCodeVisitor