JavaVM description for OpenJabaco ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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!

[Index of Archives]     [Linux Kernel]     [Linux Cryptography]     [Fedora]     [Fedora Directory]     [Red Hat Development]

  Powered by Linux