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 ListOrganization: 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