JavaVM description for OpenJabaco ?

theUser BL <[email protected]>
Newsgroups gmane.comp.java.classpath.devel
Message-ID <[email protected]>
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


_________________________________________________________________
Bleib cool: Spiel das neue Messenger Game Pingu Panik. Kostenlos!
http://redirect.gimas.net/?n=M0812xWLMGPPDE
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.