Correct spelling.
[SquirrelJME.git] / assets / developer-notes / stephanie-gawroriski / 2016 / 01 / 12.mkd
blobac4123abd296195c34c5b06c23ebb0cda74db913
1 # 2016/01/12
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 ## 10:03
11 It is snowing.
13 ## 10:12
15 The tricky part of ELF is representing the potentially very dynamic program
16 headers and section headers which may change interpretation if the ELF is
17 modified. So I suppose instead I should have adapters which are used by the
18 capacity where then they perform no actual storage, but only reading. Then
19 this way the ELF can be modified without requiring some magic. However,
20 modification of ELF files will rely on many bytes being moved within the file
21 to make room for things (if the stuff being added is in the center). Since
22 pretty much everything in the ELF usually appears in order. For Foobarniux
23 this file order will be important because the ELF will be memory mapped and
24 then directly executed. One key thing however is how sections are pretty
25 much always mapped to program headers. In retrospect, instead of modifying an
26 existing ELF I can always have an export which writes the actual changes to
27 a given DataAccessor (which is not itself, since that would corrupt the input
28 while writing to the output unless a separate image is created and then once
29 it has been written it is placed over it).
31 ## 10:21
33 Well, actually thinking about it, the program and section stuff does not have
34 to appear in order in the file for Foobarniux to work. The only thing it has
35 to know about is where methods and reference indices are. These would be
36 pointers from the base of the ELF.
38 ## 10:29
40 Another alternative is to just have ELFBinary be read only, and then have a
41 ELF writer of sorts.
43 ## 10:31
45 Or I could go for a very plain binary format, one which is essentially just an
46 index of contents (so it would be like a ZIP file). Would seem a bit strange
47 but I could have executable classes and such be stored in ZIP files with all
48 of their code and reference tables. Using a ZIP would actually be rather
49 easy to do. The only problem would be finding the end of the central index, but
50 the size of the executable would be known. ZIP seems like a cop out but it does
51 work and for what I need it can be rather simple (just code blobs).
53 ## 10:37
55 I can still keep my existing ELF library code later because I will need it to
56 load the kernel and such for bootstraps. Also using ZIP files means I do not
57 need to perform section magic and I can have resources that can be used by the
58 kernel (manifests, resources, images, etc.).
60 ## 11:12
62 On the other hand, ZIP may be a bit too complex. All I need is a simple format
63 which can store code and point to it. KBF is rather complex as it has multiple
64 depth usage of classes and such. What I mean is that is required lots and lots
65 of structures for storing data. However, this alternative format I can create
66 can just be a flat formatted file which can store the desired information as
67 needed. I can have it be rather relative. I can have a start of class
68 file, followed by method code (as needed), any fields or annotations in it.
69 Then end it with an end of class. Then having a simple table of contents
70 format will make it simple without requiring potential massive work needing
71 to handle sub-tables and such.
73 ## 11:24
75 The main consideration is storage of the global constant pool, reference table,
76 and the string table.
78 ## 11:28
80 This information can be stored at the start which is then followed by the
81 class data and then its code areas and such.
83 ## 13:44
85 Lots and lots of snow. Also the radar shows mesocyclones in the middle of the
86 large light blue areaas. I have not seen that before. The snow passing where
87 I am right now is about 35dBZ.
89 ## 13:47
91 I must concentrate and write this code.
93 ## 14:05
95 The `IndexedSetStrings` class can handle situations where constants and
96 references use strings.
98 ## 15:40
100 It is extremely windy outside, cannot see much at all. I suppose this makes it
101 a blizzard.
103 ## 20:57
105 I suppose for the KBF, it will generally be just a large set of entries in
106 a large table. That would keep things rather simple since most of the data
107 would be shared between tables.