X-Git-Url: http://git.megacz.com/?p=org.ibex.classgen.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2Fpackage.html;h=5a80af9eb6fb863af21ff1427e7a4ea3b6bc8e3a;hp=c921dab5d31a0b92eacb2033cfe0d62402e49b33;hb=76a1336320be6b7dbae29acd341659ed648f9487;hpb=94cebd4c12247ae7fd0a4b0cc66609fead0efece diff --git a/src/org/ibex/classgen/package.html b/src/org/ibex/classgen/package.html index c921dab..5a80af9 100644 --- a/src/org/ibex/classgen/package.html +++ b/src/org/ibex/classgen/package.html @@ -3,46 +3,46 @@ Example Usage:
The following:
-        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,"",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));
+ClassGen cg = new ClassGen("Test1","java.lang.Object",ACC_PUBLIC|ACC_SUPER);
 
-        mg.add(ILOAD_0);
-        mg.add(IFGT,top);
-        
-        mg.add(RETURN);
-        
-        cg.dump("Test1.class");
+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,"<init>",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");
 
Will create this bytecode: @@ -58,7 +58,7 @@ public static void main(java.lang.String[]); 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 + 10: invokespecial #16; //Method java/lang/StringBuffer."<init>":()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 - @@ -80,4 +80,19 @@ public static void main(java.lang.String[]); } + +Running Test1 will produce the following output:
+
+Hello, World - 10!
+Hello, World - 9
+Hello, World - 8!
+Hello, World - 7
+Hello, World - 6!
+Hello, World - 5
+Hello, World - 4!
+Hello, World - 3
+Hello, World - 2!
+Hello, World - 1
+
+