> On Jun 21, 2021, at 11:26 AM, Chuck Guzis via cctalk <cctalk@classiccmp.org> 
> wrote:
> 
> On 6/21/21 1:39 AM, ben via cctalk wrote:
> 
>> I have 'borrowed' copy of the Green dragon book.
>> The book promotes code generation for a multi register machine. PDP 11,
>> PDP 10, IBM 360. "(C) Bell Labs 1979 " I think is big hint here.
>> 
>> The machine model I am looking at is a single accumulator design like
>> the 6800 or the IBM 1130. A AC,PC,Index and stack. No push or pop,
>> subroutine call returns the old pc in the AC.
> 
> What is a register, but a memory location with a special name?    I'm
> assuming that your model does have memory.  Again, look to the older
> systems, such as the much-maligned (by Dijkstra) 1620.  You have *no*
> user-addressable registers--it's all memory-to-memory.   In lieu of a
> stack, you need temporaries in which to stash intermediate results.
> (The IBM 360 has no stack.)

The reason Dijkstra maligned the 1620 is not because of its lack of registers 
but because of its lack of interrupts and inability to save the full execution 
state.

It's not so much that registers have special names but that they have a 
distinct place in the instruction set.  It may be explicit, as in current 
machines, or implicit in some older machines that only have one "accumulator", 
like the ARRA or the CDC 6000 series PPUs or the PDP-8.

The registers may actually be implemented as memory (PDP-6 and PDP-10 without 
the "fast registers" feature), and perhaps the Philips PR8000 which had 8 sets 
of 8 registers, one per interrupt level.  Independently, registers may appear 
in the memory address space, as in the PDP-10 or the Electrologica X8.

> One of the restrictions of non-recursive functions in FORTRAN was
> because the idea of a machine-implemented stack was relatively
> uncommon--the Burroughs B5000 (1961) was an outlier in general systems
> architecture at the time.

The X8 also has a stack, not surprising given that Dijkstra was heavily 
involved in its design.  That machines came out in 1964 I think.

>> ...
> For heaven's sake, all you need is a decent assembler--even a
> cross-assembler.  Writing compilers in a HLL is a recent (post 1970)
> thing.  

More or less, except for the Burroughs mainframes where everything was done in 
ALGOL or a dialect -- such as ESPOL which was the variant used for writing the 
kernel.  It apparently didn't have an assembler; the little bit of machine code 
it needed to get the OS started was as I understand it written in hex (or 
octal?) machine code.

Some early assemblers are only barely an assembler; consider the Electrologica 
X1; its assembler takes only a few hundred words, in ROM.  But it has only a 
rudimentary symbol table and equally rudimentary opcodes; they don't quite rate 
the usual tag "mnemonic"...

        paul

Reply via email to