[virtmach] Definition a virtual machine ?

Stephen Pelc sfp@mpeltd.demon.co.uk
Thu, 18 Nov 1999 07:29:03 -0000


Date sent:      	Wed, 17 Nov 1999 19:02:18 +0100
From:           	Francois-Rene Rideau <fare@tunes.org>
To:             	virtmach@iecc.com
Subject:        	Re: [virtmach] Definition a virtual machine ?
Send reply to:  	virtmach@iecc.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 
specific.
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 
this were
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, sfp@mpeltd.demon.co.uk
MicroProcessor Engineering Ltd - More Real, Less Time
133 Hill Lane, Southampton SO15 5AF, England
tel: +44 1703 631441, fax: +44 1703 339691
web: http://www.mpeltd.demon.co.uk