@Override public void accept(DexCodeVisitor cv) { cv.visitStmt0R(op); } }
/** * * {@link Op#RETURN_VOID} {@link Op#NOP} {@link Op#BAD_OP} * * @param op */ public void visitStmt0R(Op op) { if (visitor != null) { visitor.visitStmt0R(op); } }
@Test public static void a122(DexClassVisitor cv) { DexMethodVisitor mv = cv.visitMethod(ACC_PUBLIC | ACC_STATIC, new Method("La;", "b", new String[] {}, "V")); DexCodeVisitor code = mv.visitCode(); code.visitRegister(3); code.visitConstStmt(CONST, 0, Integer.valueOf(0)); code.visitConstStmt(CONST, 2, Integer.valueOf(1)); code.visitStmt3R(AGET, 1, 0, 2); code.visitStmt0R(RETURN_VOID); code.visitEnd(); mv.visitEnd(); }
@Test public static void a120(DexClassVisitor cv) { DexMethodVisitor mv = cv.visitMethod(ACC_PUBLIC | ACC_STATIC, new Method("La;", "b", new String[] {}, "V")); DexCodeVisitor code = mv.visitCode(); code.visitRegister(3); code.visitConstStmt(CONST, 0, Integer.valueOf(0)); code.visitMethodStmt(INVOKE_VIRTUAL, new int[] { 0 }, new Method("Ljava/lang/String;", "toString", new String[] {}, "Ljava/lang/String;")); code.visitConstStmt(CONST, 1, Integer.valueOf(0)); code.visitStmt2R(ARRAY_LENGTH, 2, 1); code.visitStmt0R(RETURN_VOID); code.visitEnd(); mv.visitEnd(); }
dcv.visitStmt0R(Op.RETURN_VOID);
@Test public void test() { ASMifierFileV fv = new ASMifierFileV(new File("target/asmftest").toPath(), "a.b"); DexClassVisitor cv = fv.visit(ACC_PUBLIC, "La/f;", "Ljava/lang/Object;", null); DexFieldVisitor f2v = cv.visitField(ACC_PUBLIC, new Field("La/f;", "abc", "I"), null); f2v.visitEnd(); DexMethodVisitor mv = cv.visitMethod(ACC_PUBLIC | ACC_STATIC, new Method("La/f;", "zz", new String[0], "I")); DexAnnotationAble pv = mv.visitParameterAnnotation(2); DexAnnotationVisitor dav = pv.visitAnnotation("Leeeff;", Visibility.BUILD); dav.visitEnd(); DexCodeVisitor dcv = mv.visitCode(); dcv.visitConstStmt(Op.FILL_ARRAY_DATA, 0, new int[] { 1, 2, 3 }); dcv.visitStmt0R(Op.RETURN_VOID); dcv.visitEnd(); mv.visitEnd(); cv.visitEnd(); fv.visitEnd(); } }
@Test public static void i71(DexClassVisitor cv) { DexMethodVisitor mv = cv.visitMethod(ACC_STATIC, new Method("La;", "test", new String[] {}, "V")); if (mv != null) { DexCodeVisitor code = mv.visitCode(); if (code != null) { code.visitRegister(2); code.visitConstStmt(CONST_WIDE, 0, 0L); code.visitConstStmt(CONST_WIDE, 1, 2L); code.visitStmt3R(ADD_LONG, 0, 0, 1); code.visitStmt0R(RETURN_VOID); code.visitEnd(); } mv.visitEnd(); } } }
@Test public static void a123(DexClassVisitor cv) { DexMethodVisitor mv = cv.visitMethod(ACC_PUBLIC | ACC_STATIC, new Method("La;", "b", new String[] {}, "V")); DexCodeVisitor code = mv.visitCode(); code.visitRegister(3); code.visitConstStmt(CONST, 0, 0); code.visitConstStmt(CONST, 1, 1); code.visitConstStmt(CONST, 2, 0x63); code.visitStmt3R(APUT, 2, 0, 1); code.visitStmt0R(RETURN_VOID); code.visitEnd(); mv.visitEnd(); }
public static void a(DexClassVisitor cv) { DexMethodVisitor mv = cv.visitMethod(ACC_PUBLIC | ACC_STATIC, new Method("La;", "b", new String[] {}, "V")); DexCodeVisitor code = mv.visitCode(); code.visitRegister(2); DexLabel L0 = new DexLabel(); DexLabel L1 = new DexLabel(); DexLabel L2 = new DexLabel(); code.visitTryCatch(L0, L1, new DexLabel[] { L2 }, new String[] { "Lsome/Exception;" }); code.visitLabel(L0); code.visitConstStmt(CONST_STRING, 0, "abc"); code.visitLabel(L1); code.visitMethodStmt(INVOKE_VIRTUAL, new int[] { 0 }, new Method("Ljava/lang/String;", "toString", new String[] {}, "Ljava/lang/String;")); code.visitStmt0R(RETURN_VOID); code.visitLabel(L2); code.visitStmt1R(MOVE_EXCEPTION, 1); code.visitMethodStmt(INVOKE_VIRTUAL, new int[] { 1 }, new Method("Ljava/lang/String;", "toString", new String[] {}, "Ljava/lang/String;")); code.visitStmt0R(RETURN_VOID); code.visitEnd(); mv.visitEnd(); }
dcv.visitStmt0R(Op.BAD_OP); continue; dcv.visitStmt0R(op); break;
@Test public static void i63(DexClassVisitor cv) { DexMethodVisitor mv = cv.visitMethod(ACC_STATIC, new Method("La;", "b", new String[] {}, "V")); if (mv != null) { DexCodeVisitor code = mv.visitCode(); if (code != null) { code.visitRegister(1); DexLabel L1 = new DexLabel(); DexLabel L2 = new DexLabel(); code.visitLabel(L1); code.visitFieldStmt(Op.SGET, 0, -1, new Field("La;", "f", "J")); code.visitLabel(L2); code.visitStmt0R(Op.RETURN_VOID); code.visitEnd(); code.visitTryCatch(L1, L2, new DexLabel[] { L2 }, new String[] { "La;" }); } mv.visitEnd(); } } }
code.visitStmt3R(ADD_INT, 0, 0, 1); code.visitFieldStmt(SPUT_SHORT, 0, -1, f); code.visitStmt0R(RETURN_VOID); code.visitEnd();
@Test public static void merge1(DexClassVisitor cv) {// obj = array DexMethodVisitor mv = cv.visitMethod(ACC_PUBLIC | ACC_STATIC, new Method("La;", "b", new String[] {}, "V")); DexCodeVisitor code = mv.visitCode(); DexLabel L0 = new DexLabel(); DexLabel L1 = new DexLabel(); code.visitRegister(3); code.visitConstStmt(CONST, 0, 0); code.visitJumpStmt(GOTO, -1, -1, L1); code.visitLabel(L0); code.visitStmt2R(ARRAY_LENGTH, 1, 0); code.visitConstStmt(CONST, 1, 0); code.visitStmt3R(AGET, 2, 0, 1); code.visitStmt0R(RETURN_VOID); code.visitLabel(L1); code.visitConstStmt(CONST, 1, 1); code.visitTypeStmt(NEW_ARRAY, 0, 1, "[Ljava/security/cert/X509Certificate;"); code.visitJumpStmt(GOTO, -1, -1, L0); code.visitEnd(); mv.visitEnd(); } }
codeVisitor.visitFieldStmt(Op.IPUT_OBJECT, 2, 0, new Field(typeNameDesc, "args", "[Ljava/lang/Object;")); codeVisitor.visitFieldStmt(Op.IPUT, 3, 0, new Field(typeNameDesc, "idx", "I")); codeVisitor.visitStmt0R(Op.RETURN_VOID); codeVisitor.visitEnd(); mv.visitEnd();
code.visitLabel(try_end); code.visitStmt1R(MONITOR_EXIT, v0); code.visitStmt0R(RETURN_VOID); code.visitLabel(catch_a); code.visitStmt1R(MOVE_EXCEPTION, v1);
@Test public void test3() { DexFileWriter w = new DexFileWriter(); DexClassVisitor cv = w.visit(0x1, "La/c;", null, new String[]{"Ljava/lang/Comparable;"}); cv.visitSource("c.java"); cv.visitAnnotation("LAnn;", Visibility.SYSTEM).visitEnd(); DexFieldVisitor fv = cv.visitField(ACC_PUBLIC | ACC_STATIC, new Field("La/c;", "a", "I"), 55); fv.visitAnnotation("LE;", Visibility.RUNTIME).visitEnd(); fv.visitEnd(); DexMethodVisitor mv = cv.visitMethod(ACC_STATIC, new Method("La/c;", "bb", new String[]{"I"}, "V")); mv.visitAnnotation("Laaa;", Visibility.RUNTIME).visitEnd(); DexAnnotationVisitor dav = mv.visitParameterAnnotation(0).visitAnnotation("Laaa;", Visibility.RUNTIME); dav.visit("abc", true); DexAnnotationVisitor dav2 = dav.visitArray("efg"); dav2.visit("", "123"); dav2.visit("", "456"); dav2.visitEnd(); dav.visitEnd(); DexCodeVisitor code = mv.visitCode(); code.visitRegister(2); code.visitStmt0R(Op.RETURN_VOID); code.visitEnd(); mv.visitEnd(); cv.visitEnd(); w.visitEnd(); w.toByteArray(); }
"I")); code.visitLabel(L1); code.visitStmt0R(RETURN_VOID); code.visitLabel(L2); code.visitStmt1R(MOVE_EXCEPTION, 5);
@Override public void accept(DexCodeVisitor cv) { cv.visitStmt0R(op); } }
/** * * {@link Op#RETURN_VOID} {@link Op#NOP} {@link Op#BAD_OP} * * @param op */ public void visitStmt0R(Op op) { if (visitor != null) { visitor.visitStmt0R(op); } }
dcv.visitStmt0R(Op.BAD_OP); continue; dcv.visitStmt0R(op); break;