Fri, 21 Jan 2000 18:39:41 -0800
> From: Alan Grimes [mailto:email@example.com]
> Subject: fuzzyness....
> Okayzers, If it is VM we are implementing... Then pleaze
> teeel me h0w this
> thing will be implemnted... I can think of 3 ways of making a VM...
Yes, but none of your three ways address the really fundamental issues of
how we build a VM. All of them are fundamentally syntactic: they all ask
what the code we feed into the machine looks like.
We will have to answer that, of course. But the question of VM semantics is
far more important.
> Just interprit the k0d3
Generally a bad idea; as you mention below, this adds lexing and parsing
overhead to the machine, and provides no real benefit. Worse yet, it forces
the code to be transmitted in its human-readable form, which is a huge waste
> Use an intermidate bytecode to eliminate the time it takes
> for the compiler to 'lex' the language...
Bytecode will work, but is a waste of space and time. You can also
eliminate the lexing and parsing by using a compressed representation of an
abstract syntax tree. Oberon-2 proved that it could be done;
http://caesar.ics.uci.edu/laski/portablecode.html is a project which is
attempting to produce more from that base (and has so far produced a theorem
prover and a Juice->Oberon converter written in C++).
> Ask questions first then compile it. (where linux asks
> questions after it
> crashes; windoze is too stupid to ask; it just bluescreens. =P
What do you mean by this?
> Quite concievably we could implement the same programming
> model in each of
> those but at the moment we can slide by just by interpriting
> it, and then over
> time convert it to a full compiler... =\ or maintain several
> degrees of tunyness?
It really doesn't matter -- it's the same virtual machine either way.