invoke static method
//int c=sample.InvokeMethod.add(2,3);
mv.visitInsn(ICONST_2); //arg1
mv.visitInsn(ICONST_3); //arg2
mv.visitMethodInsn(INVOKESTATIC,
"sample/InvokeMethod", //class name
"add", //static method name
"(II)I"); //return type is integer
instance method invoke
//obj.cal(4,5);
mv.visitVarInsn(ALOAD, 2); //load object from stack
mv.visitInsn(ICONST_4); //arg1
mv.visitInsn(ICONST_5); //arg2
mv.visitMethodInsn(INVOKEVIRTUAL, "sample/InvokeMethod", "cal", "(II)V");
instantiation of object
//sample.InvokeMethod obj=new sample.InvokeMethod(6,7);
mv.visitTypeInsn(NEW, "sample/InvokeMethod");
mv.visitInsn(DUP);
mv.visitIntInsn(BIPUSH, 6);
mv.visitIntInsn(BIPUSH, 7);
mv.visitMethodInsn(INVOKESPECIAL, "sample/InvokeMethod", "<init>", "()V");
mv.visitVarInsn(ASTORE, 4);