[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Low-level vs. High-level programming (was My First Computer)



Paul Schlyter wrote:

>In article <20030725020918.24310.00000421@mb-m16.aol.com>,
>Michael J. Mahon <mjmahon@aol.com> wrote:

<snip>

>> Apple Pascal was bootstrapped through the ETH Zurich Pascal
>> implementation, originally running on the CDC 6400.
> 
>It must have been quite hard to implement Pascal on the CDC 6400,
>since Pascal is a stack-based languages (with variables allocated on
>the stack, recursive procedures, etc) but the CDC 6400 hardware
>lacked a hardware stack (like many other mainframes of that time).
>The CDC 6400 was much more suitable for running FORTRAN programs
>since in FORTRAN recursion was not allowed.  Calling a subroutine on
>the CDC 6400 was usually acomplished like this: store the return
>address at the first word (the CDC 6400 had 60-bit words) of the
>subroutine, then do a jump to the second word of the subroutine.
>WHen the subroutine was about to return, it did an indirect jump
>to the first word of itself.  With such a scheme, attempting to
>do recursive calls would quickly create havoc.

Actually, it is very simple to implement recursion on machines
that do not have a _hardware_ stack.  Stacks are a simple
software construct.  LISP was first implemented on an IBM 709,
which had no "native" stack.  The standard call instruction on
the 709x machines was "TSX"--Transfer and Set indeX--so the
return address was easily available in the chosen index register
(usually XR4).  Even the standard list selection functions,
CAR and CDR, are derived from the Address and Decrement
fields of the 709x machines' 36-bit word.

Many microprocessors have a subroutine return stack,
but it is very difficult to use for passing parameters or
allocating local variables (due to limited size or difficult
indexing).

It is very simple to make a software stack implementation
as long as the machine has index register(s).  ;-)

The "set" datatype of ETH Pascal was 60 bits long--the word
length of the CDC 6xxx series--and since a "set of char" is a
critical part of the lexical processing in the compiler, this
version of Pascal limited itself to using 60 characters.  ;-)

>The CDC 6400 was btw the world's first "supercomputer", designed by
>Seymour Cray (who later left CDC to create his own company, Cray
>Research).  As opposed to the predominant IBM mainframe of those
>days, the CDC 6400 was designed for number crunching.  Its number
>crunching power was equivalent to perhaps a 20 MHz 80386 with an
>accompanying 80387.  However, the CDC 6400 appeared more than 20
>years before the 80386.

Actually, the CDC 6600 was the first of its line, with the 6400 being
a reduced-cost version.  Later models of the 6400 included MP
capability, which the 6600 did not.

>Some 10+ years after the CDC 6400, the Cray-1 supercomputer
>appeared, which had a computing power equivalent to approx. a
>500 MHz Pentium-3.  However, the clock frequency of the Cray-1
>was only 80 MHz....  The Cray-1 too predated the Pentium-3 by
>about 20 years.

Yes, Cray designed the first machines deserving of the RISC tag.
Thornton's "little brown booklet" on the design of the 6600 is a
classic description of the design tradeoffs involved in making a
machine where speed and simpliticy are the only goals.

-michael

Check out amazing quality 8-bit Apple sound on my
Home page:  http://members.aol.com/MJMahon/