Hi! Have a look at http://www.jabaco.org/board/index.php there is a nice project, which creates a VisualBasic 6 compiler, IDE and Framework for the JavaVM. I think that project is very nice. And it is very easy to create with it with not many Java-experience good programs. Also one of the advantages is, that the Framework is under the BSD-license: http://www.jabaco.org/index.php?page=doc One disadvantage of it is, that ide IDE and the compiler (which creates platformindependent .class files) are only existing for Windows and both are ClosedSource. I think it would be nice, to rewrite the Jabaco-Compiler under an OpenSource-license. But where can I find documentations about .class files? How are they are structures and so on? At the moment I look with javap which Java-Binary code is what a assembler instruction and so on. But do I really need to find all the information, how .class files are constructures myself or existing everywhere in the internet information about this? Greatings theuserbl ---------------------------------------------------- 00 -- nop 01 -- aconst_null 02 -- iconst_m1 03 -- iconst_0 04 -- iconst_1 05 -- iconst_2 06 -- iconst_3 07 -- iconst_4 08 -- iconst_5 09 -- lconst_0 0A -- lconst_1 0B -- fconst_0 0C -- fconst_1 0D -- fconst_2 0E -- dconst_0 0F -- dconst_1 10 B1 -- bipush -79 ** 0xB1 = 177 ; 177-256 = -79 11 01 00 -- sipush 256 ** 256 x 0x01 + 0 x 0x00 = 256 12 5C -- ldc #92; //String Welcome to the ... ** 0x5C = 92 12 4F -- ldc #79; //String ** 0x4F = 79 13 xx xx -- ??? 14 xx xx -- ??? 15 B1 -- iload 177 16 B1 -- lload 177 17 B1 -- fload 177 18 B1 -- dload 177 19 B1 -- aload 177 ** 0xB1 = 177 1A -- iload_0 1B -- iload_1 1C -- iload_2 1D -- iload_3 1E -- lload_0 1F -- lload_1 20 -- lload_2 21 -- lload_3 22 -- fload_0 23 -- fload_1 24 -- fload_2 25 -- fload_3 26 -- dload_0 27 -- dload_1 28 -- dload_2 29 -- dload_3 2A -- aload_0 2B -- aload_1 2C -- aload_2 2D -- aload_3 2E -- iaload 2F -- laload 30 -- faload 31 -- daload 32 -- aaload 33 -- baload 34 -- caload 35 -- saload 36 B1 -- istore 177 37 B1 -- lstore 177 38 B1 -- fstore 177 39 B1 -- dstore 177 3A B1 -- astore 177 3B -- istore_0 3C -- istore_1 3D -- istore_2 3E -- istore_3 3F -- lstore_0 40 -- lstore_1 41 -- lstore_2 42 -- lstore_3 43 -- fstore_0 44 -- fstore_1 45 -- fstore_2 46 -- fstore_3 47 -- dstore_0 48 -- dstore_1 49 -- dstore_2 4A -- dstore_3 4B -- astore_0 4C -- astore_1 4D -- astore_2 4E -- astore_3 4F -- iastore 50 -- lastore 51 -- fastore 52 -- dastore 53 -- aastore 54 -- bastore 55 -- castore 56 -- sastore 57 -- pop 58 -- pop2 59 -- dup 5A -- dup_x1 5B -- dup_x2 5C -- dup2 5D -- dup2_x1 5E -- dup2_x2 5F -- swap 60 -- iadd ** integer addition 61 -- ladd ** long integer addition 62 -- fadd ** float addition 63 -- dadd ** double addition 64 -- isub ** integer subtraktion 65 -- lsub 66 -- fsub 67 -- dsub 68 -- imul ** integer multiplikation 69 -- lmul 6A -- fmul 6B -- dmul 6C -- idiv ** integer division 6D -- ldiv 6E -- fdiv 6F -- ddiv 70 -- irem 71 -- lrem 72 -- frem 73 -- drem 74 -- ineg 75 -- lneg 76 -- fneg 77 -- dneg 78 -- ishl ** integer shift left - Binärzahl bitweise nach links verschieben 79 -- lshl 7A -- ishr ** integer shift right - Binärzahl bitweise nach rechts verschieben 7B -- lshr 7C -- iushr 7D -- lushr 7E -- iand ** integer Verknüfung mit logischem UND 7F -- land 80 -- ior ** integer Verknüpfung mit logischem ODER 81 -- lor 82 -- ixor ** integer Verknüpfung mit logischem XOR 83 -- lxor 84 xx xx -- ??? 85 -- i2l ** integer zu long integer Umwandlung 86 -- i2f 87 -- i2d 88 -- l2i 89 -- l2f 8A -- l2d 8B -- f2i 8C -- f2l 8D -- f2d 8E -- d2i 8F -- d2l 90 -- d2f 91 -- i2b 92 -- i2c 93 -- i2s 94 -- lcmp ** long integer compare 95 -- fcmpl 96 -- fcmpg 97 -- dcmpl 98 -- dcmpg 99 xx xx -- ??? 9A xx xx -- ??? 9B xx xx -- ??? 9C xx xx -- ??? 9D xx xx -- ??? 9E xx xx -- ??? 9F xx xx -- ??? A0 xx xx -- ??? ... A7 00 E1 -- goto 311 ** bin in Zeile 86 ; 0xE1 = 225 ; 86+225=311 A8 xx xx -- ??? A9 B1 -- ret 177 B0 -- areturn B1 -- return B2 00 55 -- getstatic #85; //Field java/lang/System.out:Ljava/io/PrintStream; ** 0x55 = 85 B2 00 5A -- getstatic #90; //Field VBA/Constants.vbCrLf:Ljava/lang/String; ** 0x5A = 90 B3 xx xx -- ??? B4 00 23 -- getfield #35; //Field QuizList:LVBA/VBArrayObject; .. B6 00 13 -- invokevirtual #19; //Method clsQuiz.StartQuiz:()V ** 0x13 = 19 B6 00 68 -- invokevirtual #104; //Method java/io/PrintStream.println:(Ljava/lang/String;)V B7 00 10 -- invokespecial #16; //Method clsQuiz."<init>":()V ** 0x10 = 16 B7 00 0D -- invokespecial #13; //Method java/lang/Object."<init>":()V ** 0x0D = 13 B8 00 62 -- invokestatic #98; //Method VBA/VBString.appendStrings:(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; B9 00 4C 01 00 -- invokeinterface #76, 1; // InterfaceMethod VBA/IVBArray.getBase:()I B9 00 29 04 00 -- invokeinterface #41, 4; // InterfaceMethod VBA/IVBArray.setBound:(IIZ)V ... BB 00 0F -- new #15; //class clsQuiz ** 0x0F =15 BB 00 1B -- new #27; //class VBA/VBArray ** 0x1B=27 ... C0 xx xx -- ??? ... C8 xx xx -- ??? C9 xx xx -- ??? CA -- bytecode 202 CB -- bytecode 203 CC -- bytecode 204 CD -- bytecode 205 CE -- bytecode 206 CF -- bytecode 207 D0 -- bytecode 208 ** 0xD0 = 208 D1 -- bytecode 209 D2 -- bytecode 210 D3 -- bytecode 211 ... E0 -- bytecode 224 ... F0 -- bytecode 240 ... F8 -- bytecode 248 ... FC -- bytecode 252 FD -- bytecode 253 FE B1 -- nonpriv 177 FF B1 -- priv 177 Sicher, schnell, übersichtlich - der Internet Browser vom Marktführer! |