X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2Fpackage.html;fp=src%2Forg%2Fibex%2Fclassgen%2Fpackage.html;h=c921dab5d31a0b92eacb2033cfe0d62402e49b33;hb=94cebd4c12247ae7fd0a4b0cc66609fead0efece;hp=0000000000000000000000000000000000000000;hpb=fb8a2dfe2f45b27710921562df968b86f2faceee;p=org.ibex.classgen.git diff --git a/src/org/ibex/classgen/package.html b/src/org/ibex/classgen/package.html new file mode 100644 index 0000000..c921dab --- /dev/null +++ b/src/org/ibex/classgen/package.html @@ -0,0 +1,83 @@ +
+Example Usage:+ ClassGen cg = new ClassGen("Test1","java.lang.Object",ACC_PUBLIC|ACC_SUPER); + + FieldGen fg = cg.addField("message",Type.STRING,ACC_PRIVATE|ACC_STATIC); + fg.setConstantValue("Hello, World"); + + MethodGen mg = cg.addMethod("main",Type.VOID,new Type[]{Type.arrayType(Type.STRING)},ACC_STATIC|ACC_PUBLIC); + mg.add(LDC,10); + mg.add(ISTORE_0); + + int top = mg.size(); + mg.add(GETSTATIC,new FieldRef("java.lang.System","out",new Type.Object("java.io.PrintStream"))); + mg.add(NEW,Type.STRINGBUFFER); + mg.add(DUP); + mg.add(INVOKESPECIAL,new MethodRef(Type.STRINGBUFFER,"+ +Will create this bytecode: +",Type.VOID,Type.NO_ARGS)); + mg.add(GETSTATIC,new FieldRef("Test1","message",Type.STRING)); + mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.STRING})); + mg.add(LDC," - "); + mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.STRING})); + mg.add(ILOAD_0); + mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.INT})); + + mg.add(ILOAD_0); + mg.add(ICONST_1); + mg.add(IAND); + int b1 = mg.add(IFNE); + mg.add(LDC,'!'); + mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"append",Type.STRINGBUFFER,new Type[]{Type.CHAR})); + mg.setArg(b1,mg.size()); + + mg.add(INVOKEVIRTUAL,new MethodRef(Type.STRINGBUFFER,"toString",Type.STRING,Type.NO_ARGS)); + mg.add(INVOKEVIRTUAL,new MethodRef("java.io.PrintStream","println",Type.VOID,new Type[]{Type.STRING})); + + mg.add(IINC,new MethodGen.Pair(0,-1)); + + mg.add(ILOAD_0); + mg.add(IFGT,top); + + mg.add(RETURN); + + cg.dump("Test1.class"); +
+public class Test1 extends java.lang.Object{ +private static java.lang.String message; + +public static void main(java.lang.String[]); + throws + Code: + 0: bipush 10 + 2: istore_0 + 3: getstatic #10; //Field java/lang/System.out:Ljava/io/PrintStream; + 6: new #12; //class StringBuffer + 9: dup + 10: invokespecial #16; //Method java/lang/StringBuffer."+":()V + 13: getstatic #20; //Field message:Ljava/lang/String; + 16: invokevirtual #24; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer; + 19: ldc #26; //String - + 21: invokevirtual #24; //Method java/lang/StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer; + 24: iload_0 + 25: invokevirtual #29; //Method java/lang/StringBuffer.append:(I)Ljava/lang/StringBuffer; + 28: iload_0 + 29: iconst_1 + 30: iand + 31: ifne 39 + 34: bipush 33 + 36: invokevirtual #32; //Method java/lang/StringBuffer.append:(C)Ljava/lang/StringBuffer; + 39: invokevirtual #36; //Method java/lang/StringBuffer.toString:()Ljava/lang/String; + 42: invokevirtual #42; //Method java/io/PrintStream.println:(Ljava/lang/String;)V + 45: iinc 0, -1 + 48: iload_0 + 49: ifgt 3 + 52: return + +} +