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._
11 Using a separate `FieldValue` with indices should make it easier and cleaner to
12 implement as `FieldValue` will just get things by their index.
16 Well my breakfast was rather nice.
20 I have this idea of creating a JavaME 8 virtual machine (the VM part in C)
21 and then having a basic library implementation. I could target Palm OS, DOS,
22 and a few other ancient no longer used systems.
26 Actually the VM environment for JavaME has been brought closer to JavaSE and
27 it can be thought up of being a very stripped down version of JavaSE. I can
28 actually run a diff to see which classes are new and which classes are not
33 Looks like the ME base classes in the CLDC profile has a bunch of classes
34 missing. So I desired to do this I would have to split "-core" into one for
35 "-cldc" and "-core" for the remaining stuff and then solve any potential
36 dependencies that they might rely on. So really my library is just Java SE
37 8 Embedded. Well supporting that will be the first goal.
41 I could probably go ME, but that would not be as useful for me since I do not
42 have many extremely low memory devices. One I do have is Arduinos and a Zilog
43 development board. The arduinos have extremely tiny amounts of flash and RAM so
44 a virtual machine would probably be too hefty to run on it. The Zilog I have
45 is a bit better but not by much. However my own compact1 support would have the
46 possibility of running on hardware such as the Nintendo 64 and Dreamcast which
47 are very memory limited. The Playstation is even more limited with 2MiB of RAM,
52 It could however help me to understand the byte code better and how it
57 The question is though, do I make it compatible with existing virtual machines
58 so it can become a JVM library (jvm.dll/libjvm.so)?
62 Well I have been doing that right now, but it appears it would be more work in
63 the end. The one thing I dislike about C is the lack of namespaces, everything
64 is essentially just a global symbol.
68 Actually, forget that, not going to write a C virtual machine interface.
69 However what I will do is move the jvm.h and jni.h to system-command-cc since
70 users might want to compile pre-existing JNI code to run in Squirrnix which is
71 pure Java (and if their native code is C instead of Java then they would have
72 to rewrite everything in Java using Squirrnix specific interfaces).
76 My XServe G5 is quite loud but also quite fast. Hotspot does have PowerPC
77 64-bit support so I wonder if OpenJDK 8 on Debian's PPC64 sid port has it
78 enabled. If it does then it will be super fast.
82 Well this method that is essentially just
85 [FINE] @1 invokespecial
88 Disassembles correctly. This is the method
89 `net.multiphasicapps.k8.kernel.platform.ieee1275.powerpc.Main`.
93 On that PowerPC 64-bit machine, JamVM at least goes by speedily.
97 So far the stuff seems much simpler and more concise compared to the previously
98 mixed assembler and disassembler. Also without MutableOpCode the values can be
99 directly read from the program without having a buffer in the middle.
103 Upgrading the Linux kernel on it makes it not sound like a jet anymore, I
104 suppose power management was figured out. Nice however since I no longer need
105 hearing protection from the sound because it is quite low currently rather than
106 just blasting all fans to maximum. I hear a beat though so some fans are
107 resonating differently most likely. This is good though for Squirrnix however
108 as this means the fans or the temperature related stuff is software controlled
109 rather than having it pure hardware. Sometimes the fans speed up (their pitch
110 increases) but then eventually it gets lower.