I should have assembly methods for long building and unbuilding since it could be sped up by the compiler. It would also be simpler to merge two values together as well.
And on top of that, I am going to make it so that all the math operations return their correct type so I do not have to use the return value hacking. I think this will be much better. It could also mean software math is usable for Java SE and SpringCoat.
Okay so it seems invoking long values is wrong?
Okay so the memory read/write instructions are okay.
LRETURN is not returning two values, it is just returning one and
the debug point says what was popped from the stack is not a long...
Oh yeah because I just pop the one and I check if it is wide, it should be top.
After bug fixes and working on things, will be heading to getting the launcher or at least the hello demo working properly. Will be interesting to see how this goes!
Okay so I think all memory needs to be tagged or similar. I could use the upper 8-bits of the size for the tag information. I think this will be very important. I can have some extra bits, like if something is an object or otherwise. It would limit allocations to 16MiB but this is a mobile embedded system so that is not too bad. I think that would be the best, just so I can determine say which task owns a block (so when it is closed, everything can be quickly cleaned out) but also to know if things are objects or otherwise.
Okay, so I have tagging now which should help with initializing classes and such for other tasks when they are booted.