[comp.arch] Real Compiler for One Instruction Computer?

davis@clocs.cs.unc.edu (Mark Davis) (11/23/88)

Recently on comp.arch there has been discussion of a zero instruction
set computer (ZISC) which actually is a one operation computer.  One
architecture is the Subtract and branch on less that zero instruction
with 3 or 4 operands (I find some references to Van der Poel, 1956
for this construction).

Has anyone ever tried to write a compiler for such a machine or done
any significant simulations?

Thanks - Mark
[I've heard that in the 1950's there was a Ph.D. thesis implementing a
Fortran compiler for a Turing machine, which is sort of the same spirit.
but would be fascinated to hear of any other work in that vein.  I suspect
it would be filed under theory of computation.  -John]
[From davis@clocs.cs.unc.edu (Mark Davis)]
--
Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU
Plausible paths are { decvax | harvard | yale | bbn}!ima
Please send responses to the originator of the message -- I cannot forward
mail accidentally sent back to compilers.  Meta-mail to ima!compilers-request

gert@prls.UUCP (Gert Slavenburg) (11/30/88)

Actually, I own a REAL HARDWARE OISC according to van der Poel. It runs
(crawls would be a better word) the PL0 high level language (a Pascal subset). 

Its origin is immaterial, suffice it to say that some very bright and very
fanatic people put the hardware together in 1987 in the Netherlands, just for
fun, and decided to show that it could do everything that a computer was 
supposed to do, by writing an interpreter for the PL0 virtual machine [Wirth
1976] for the 'van der Poel' instruction set. I am the 'caretaker' of the
machine.

The actual machine is a single board, designed to operate at a reasonably high
clock speed (I believe 12 MHz), using fast static RAM as main memory. The only
I/O of the 'computer' is a double UART, to hook it between an Atari/ST and a
terminal. The ST does the translation of the Pascal subset (PL0 from Wirth's
book 'Algorithms + Data Structures = Programs') to the PL0 virtual machine
code. There is no reason why the compiler couldn't be made to run on the OISC, 
other than the fact that the current OISC board has a limited amount of
main memory and lacks file I/O devices (besides the obvious SPEED problem).

The whole thing was a fun exercise, but the actual machine runs and does its
job, hence showing once and for all that 'van der Poel' was right (of course).

However, don't think of this as the ultimate RISC. RISC is a carefull balance
of what to do in hardware and what to do in software - not a minimization of
the opcode set. The van der Poel machine is VERY SLOW on any task, given its
memory bandwidth, due to the fact that doing any computation at all requires
just too many instructions.

  just thought I'd mention that it CAN and HAS BEEN done,

  Gert Slavenburg
  (UUCP : ..!pyramid!prls!gert)

[Wirth 1976] N. Wirth, 'Algorithms + Data Structures = Programs', Prentice Hall
--
Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU
Plausible paths are { decvax | harvard | yale | bbn}!ima
Please send responses to the originator of the message -- I cannot forward
mail accidentally sent back to compilers.  Meta-mail to ima!compilers-request

gert@prls.UUCP (Gert Slavenburg) (11/30/88)

Actually, I own a REAL HARDWARE OISC according to van der Poel. It runs
(crawls would be a better word) the PL0 high level language (a Pascal subset). 

Its origin is immaterial, suffice it to say that some very bright and very
fanatic people put the hardware together in 1987 in the Netherlands, just for
fun, and decided to show that it could do everything that a computer was 
supposed to do, by writing an interpreter for the PL0 virtual machine [Wirth
1976] for the 'van der Poel' instruction set. I am the 'caretaker' of the
machine.

The actual machine is a single board, designed to operate at a reasonably high
clock speed (I believe 12 MHz), using fast static RAM as main memory. The only
I/O of the 'computer' is a double UART, to hook it between an Atari/ST and a
terminal. The ST does the translation of the Pascal subset (PL0 from Wirth's
book 'Algorithms + Data Structures = Programs') to the PL0 virtual machine
code. There is no reason why the compiler couldn't be made to run on the OISC, 
other than the fact that the current OISC board has a limited amount of
main memory and lacks file I/O devices (besides the obvious SPEED problem).

The whole thing was a fun exercise, but the actual machine runs and does its
job, hence showing once and for all that 'van der Poel' was right (of course).

However, don't think of this as the ultimate RISC. RISC is a carefull balance
of what to do in hardware and what to do in software - not a minimization of
the opcode set. The van der Poel machine is VERY SLOW on any task, given its
memory bandwidth, due to the fact that doing any computation at all requires
just too many instructions.

  just thought I'd mention that it CAN and HAS BEEN done,

  Gert Slavenburg
  (UUCP : ..!pyramid!prls!gert)

[Wirth 1976] N. Wirth, 'Algorithms + Data Structures = Programs', Prentice Hall