Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!tut.cis.ohio-state.edu!ucbvax!SUN.COM!wmb
From: wmb@SUN.COM (Mitch Bradley)
Newsgroups: comp.lang.forth
Subject: Re: Implementation dependence
Message-ID: <8908161813.AA12808@jade.berkeley.edu>
Date: 16 Aug 89 16:42:36 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Reply-To: Forth Interest Group International List 
Organization: The Internet
Lines: 35

I would claim that the "Forth Virtual Machine", as implied by FIG Forth
or Forth 79 or Forth 83 or whatever standard you choose, has the following
properties.

* 16-bit stack width
* Byte addressing with no alignment restrictions
* twos-complement arithmetic
* ASCII character set
* threaded code

I believe that this is a stupid virtual machine, because it imposes
too many unnecessary restrictions.  Many of these restrictions follow
from too few operators, in that one operator is used for 2 purposes.

The main culprit is the lack of separate operators for address arithmetic,
forcing the use of integer arithmetic operators for address arithmetic,
and subsequently imposing a model (linear, byte addressed, no alignment)
of the address organization.

Many vendors have chosen to relax one or more of these restrictions,
implementing something that is not a "correct" Forth Virtual Machine.

It's a pity that the Forth Virtual Machine was so badly designed in
this respect.

The BCPL language, upon which C was modeled, had similar problems in
that it imposed an implicit addressing model through lack of ability
to distinguish between integer arithmetic and address arithmetic.
A main reason that C was invented was because BCPL didn't fit very
cleanly on a PDP-11, so Dennis Ritchie decided to fix the language.

The ANSI standards team is attempting to remedy this addressing problem
by providing operators for address manipulation.  I hope it's not too late.

Mitch