1 import jas.*; 2 import java.io.*; 3 4 9 class hworld implements RuntimeConstants 10 { 11 public static void main(String argv[]) 12 throws jasError, IOException 13 { 14 15 ClassEnv nclass = new ClassEnv(); 17 nclass.setClass(new ClassCP("out")); 18 nclass.setSuperClass(new ClassCP("java/lang/Object")); 19 nclass.setClassAccess((short)ACC_PUBLIC); 20 21 23 CodeAttr init = new CodeAttr(); 24 init.addInsn(new Insn(opc_aload_0)); 25 init.addInsn(new Insn(opc_invokenonvirtual, 26 new MethodCP("java/lang/Object", "<init>", "()V"))); 27 init.addInsn(new Insn(opc_return)); 28 29 30 CodeAttr doit = new CodeAttr(); 32 33 doit.addInsn(new Insn(opc_getstatic, 35 new FieldCP("java/lang/System", 36 "out", 37 "Ljava/io/PrintStream;"))); 38 doit.addInsn(new Insn(opc_astore_1)); 39 doit.addInsn(new Insn(opc_ldc, 40 new StringCP("Hello World"))); 41 doit.addInsn(new Insn(opc_astore_2)); 42 43 doit.addInsn(new Insn(opc_bipush, 5)); 45 doit.addInsn(new Insn(opc_istore_3)); 46 47 Label loop = new Label("loop"); 49 doit.addInsn(loop); 50 doit.addInsn(new Insn(opc_aload_1)); 51 doit.addInsn(new Insn(opc_aload_2)); 52 doit.addInsn(new Insn(opc_invokevirtual, 53 new MethodCP("java/io/PrintStream", 54 "println", 55 "(Ljava/lang/String;)V"))); 56 doit.addInsn(new IincInsn(3, -1)); 57 doit.addInsn(new Insn(opc_iload_3)); 58 doit.addInsn(new Insn(opc_ifne, loop)); 59 doit.addInsn(new Insn(opc_return)); 60 61 doit.setStackSize((short)3); doit.setVarSize((short)4); 63 64 nclass.addMethod((short)ACC_PUBLIC, "<init>", "()V", init, null); 66 67 nclass.addMethod((short)(ACC_PUBLIC|ACC_STATIC), "main", 69 "([Ljava/lang/String;)V", doit, null); 70 71 nclass.write(new DataOutputStream 73 (new FileOutputStream("out.class"))); 74 } 75 } 76 77 78
| Popular Tags
|