[virtmach] Definition a virtual machine ?
Thu, 18 Nov 1999 07:29:03 -0000
Date sent: Wed, 17 Nov 1999 19:02:18 +0100
From: Francois-Rene Rideau <firstname.lastname@example.org>
Subject: Re: [virtmach] Definition a virtual machine ?
Send reply to: email@example.com
Francois-Rene Rideau wrote
> On Wed, Nov 17, 1999 at 05:36:25PM -0000, Stephen Pelc wrote:
> > In both SENDIT and OTA, the VM consists of definitions that
> > cover both programming and O/S access. We used a two stack
> > virtual machine derived from Forth with extensions for local
> > frames.
> Interesting. Was your VM significantly different from OpenFirmware?
> If no, how so? In either case (yes or no), why so?
> Oh, and how do you assert issues of correctness/security
> with (low-level?) FORTHish mobile code?
1) Open Firmware tokenises *Forth source* code and is language
2) SENDIT/OTA tokenises at the object level. We added direct
support for local variable frames in main memory, and changed
the encoding several times after profiling the compiler output.
This lead to a whole range of tokens for short literals and
local variable support. We also allow the most commonly used
subroutines to be encoded as one byte tokens. The reasons for
a) Terminals are resource limited
b) Transmission costs are significant
> why is there a need that the portable code be executed on the tiny terminal?
Because in a smart-card (or mag-stripe) environment, the
terminal has to process the card data. In Europe, local
telephone calls are not free, so the card companies keep the
number of on-line transactions to a minimum. Many terminals are
portable, e.g. the terminals used at restaurant tables.
> However, it would move responsibilities
> as for system reliability, in that you'd have to assert correction
> of a bundle chip&compiler, rather than of a bundle chip&interpreter.
> That would be a nice way for technical progress to happen, and open
> lots of opportunities...
You have to do both. If you consider the virtual machine
specification to be a "surface", then the terminal hardware
needs to be verified against the surface. This means that all
terminals will behave in the same way with the same binary.
Similarly the compilers must be verified against the surface.
The whole point is to avoid having to verify each compiler
against each terminal.
Stephen Pelc, firstname.lastname@example.org
MicroProcessor Engineering Ltd - More Real, Less Time
133 Hill Lane, Southampton SO15 5AF, England
tel: +44 1703 631441, fax: +44 1703 339691