> The RCX is perhaps once of the most minimal devices around with a low
amount
> of CPU and memory space to work with, from what has been said so far
getting
> Rotor to work on it would mean stripping down Rotor to a large degree ?

Does the RCX even have a hard drive, I don't think it does, thus another
issue would
be the problems of not having virtual memory.

Note from publicly available info, Xbox doesn't have Virtual Memory but it
only has
64 megs of RAM, they use other techniques to reduce memory without loosing
speed,
like only having a single process, having static libraries, as well as
slimming the OS itself.
Thus Xbox images tend to be very static, they don't rely on tiny little
components that
get loaded and unloaded transparently all the time.  Their OS or Runtime
(lack there of)
doesn't support that.

Additionally another issue is the Instruction Set of the Embedded Processor,
for
example some processors don't have all the instructions you need so then you
would have to emulate the core instructions you don't have, another reason
for having
a Threaded Code Interpreter  or a hybrid system for low memory devices :)

What processor does the RCX have, I talked to the Lego guys a long time ago
at Siggraph
when they first demo'd the Brick, and I know that had their own Behavior
Description Language
to write the controllers of the Brick, but I also remember you could do some
coding using VC6,
I am not sure about this though.

Does the RCX use a Intel CPU  ?

 >> This is why I was wondering about the compact framework, work on porting
the CLI to
>> devices has been done so it makes perfect sense to me that such work is
rolled into
>> Rotor.

I think this might be an incorrect way to think abou this, I don't see
"code" from the compact framework being rolled into rotor, but some
of the implementation techniques they use in the Compact Framework
definitely could be applied to Rotor.

You have to remind yourself that interpretation isn't allways bad, JIT's
are cool, but a really modern high performance interpreter could potentially
do wonders with saving space.

For example their are several techniques in the VM community to make
interpreters fast "really fast" examples of these techniques or "Patterns"
are:
    * Direct / Indirect / Call  Threading
    * Internal Opcodes ( Converting to a internal more optimized format)
    * Super Instructions  or Super Operators
    * Selective Inlining
    * JVM's Quick Instructions
    * etc. etc. etc.

My personal favorite VM system BEFORE the CLI :) was Self and it's VM, they
created
an interesting object oriented langauge paradigm and then figured out how to
make it really
crank.  I guess you could say they focussed quite a bit on Performance
patterns whereas
the Smalltalk community did that as well, but also did work on Memory
Reduction Hacks.
The Self language guys did tons of great stuff in the 80s and early 90's
that's been in hot
demand since JVM took off.

Interesting note is that the HotSpot JVM started as a bunch of techniques or
Patterns that
were learned form Self and applied to build a high performance Smalltalk
Virtual Machine.

When Java took off, they leveraged the techniques.

Some of these "Patterns" could be useful to a potenial Low memory version of
Rotor
one could pick and choose and apply these patterns to Rotor one at a time
to see which ones work well.

Additionaly the same could be said for object layouts, GC etc. etc Tradeoffs
matter
a ton, the tradeoffs that were used to get Rotor out were not the ones that
are
what you are interested in, thus the key question is:

What are the techniques that the Rotor implementation currently embodies and
what
are the tradeoffs of those design descisions to the problems of low memory
devices
like the RCX.

So when you think about CLI implementations, first ask your self what
problem
you are solving and then look at several implementations of different VM
based
languages and you'll start to see which solutions map well to which
problems.

As I said in my previous posts, I  would think that memory is the big one,
and that
you would have to identify a ton of Memory Reducing Patterns that have been
applied before to implementation of the Virtual Machine itself in the early
80's that's
when all the really neat stuff was being invented and try applying them to
Rotor.

>>
Frank or other VM gurus, if you are reading this, are you utilizing Adaptive
Compilation
in the Compact framework, in the talk you gave at the MS Cambridge you
mentioned
Threaded Code.  Does the Compact Framework JIT to an internal format part of
which gets
interpreterd to save space and part natively compiled depending on useage ?

Interestingly there  are some elements of that in Rotor's JIT, you can see
there are some
instructions that are not CIL instructions, some of the these are
implemented using functions
as opposed to JITTing.

If the Rotor Jitter guys are reading, did Rotor JIT start out as a Threaded
Code Interpreter
thus these "internal instructions" I am seeing are the remnants of the once
aged Threaded Code
Interpreter now evolved into a native JIT ?
>>

Sorry for the long post :)

Yahya

Reply via email to