Correct spelling.
[SquirrelJME.git] / assets / developer-notes / stephanie-gawroriski / 2016 / 01 / 09.mkd
blob94c766eae81acdd4a4793e8a7f1d006479b02fbc
1 # 2016/01/09
3 ***DISCLAIMER***: _These notes are from the defunct k8 project which_
4 _precedes SquirrelJME. The notes for SquirrelJME start on 2016/02/26!_
5 _The k8 project was effectively a Java SE 8 operating system and as such_
6 _all of the notes are in the context of that scope. That project is no_
7 _longer my goal as SquirrelJME is the spiritual successor to it._
9 ## 09:38
11 So for KBFs I need the ability to both read and write with simple code.
13 ## 09:48
15 I could use ELFs instead of KBFs. However ELF does not support some Java stuff
16 natively so it will have to be virtualized within sections.
18 ## 10:08
20 Many systems do support ELFs and can boot them directly.
22 ## 10:24
24 With ELF, I can then do objdump or even native compilation of code (provided
25 there is an abstraction layer which is required for system calls to operate).
27 ## 10:31
29 Then I can test the programs on Linux and FreeBSD assuming I do not need to
30 set an interpreter.
32 ## 10:49
34 The main thing would be mapping the `Bin` classes to the ELF format which can
35 be done. The main thing that the KBFs would have would be that it can store
36 stuff such as the constant pool. The format in ELFs could contain everything
37 the KBF can have also. The main thing though is that by using ELF I can reuse
38 part of the ELF library code for reading and writing compiled classes. ELF does
39 have `SHF_LINK_ORDER` which I will use because that simplifies things. By
40 using that I can have it where I do not have to perform any relocation of code
41 or symbol lookup and do things rather directly. The only thing that requires
42 initialization on load would be the reference table.
44 ## 10:54
46 So other linking utilties know that it is Foobarniux I will need to obtain an
47 OS ABI number from whoever organizes such things. Appears it is
48 `registry@sco.com`. So once I have a drafted way of how I am going to use the
49 ELF I can mail them and request a number. Using ELF at least (before I decided
50 against it) should permit me to keep things simpler, and may help for testing
51 on host systems by linking in my recompiled code so that it runs in a simulated
52 userspace Linux or FreeBSD process.
54 ## 11:00
56 On another note, I should add a type of field for the compiler that Foobarniux
57 would provide. When building Foobarniux on Foobarniux itself it is possible
58 that a bug in the compiler or partial implementation will cause it to not
59 build properly so that then a bootstrap compiler would have to be used.
61 ## 17:51
63 For system commands, I can have one command per package, since packages can
64 depend on each other anyway.
66 ## 19:29
68 The C library will essentially be in Java, except for the headers. The headers
69 will use special attributes similar to GCC ones which specify a binding call
70 point for execution.
72 ## 23:02
74 For C compilation, instead of writing byte code myself I can instead source
75 code translation from C to Java. Then I can just take that code and then
76 compile it with the built in Java compiler.
78 ## 23:10
80 Of course I need to work on ELF support though so I can get a bootable kernel.
81 A C compiler can come later on when needed.
83 ## 23:20
85 Going to actually need a method which can set the specific byte order of the
86 data accessor (that is make a new one). An ELF may be read opened as big endian
87 but it might just end up being little endian formatted.