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.)
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.
Thinking about registers, I recall that the initial versions of the
STAR-100 mapped the register file (256x64 bits) into the user's low
memory, so you could have both vectors and scalars as register-resident.
It turned out later to play hob with the scheduling hardware, so the
capability was disabled.
Is Fortran the newer version of FORTRAN ( I II IV )?
My recollection from X3J3 is that "Fortran" was officially endorsed with
F90. F77 still has FORTRAN officially.
There is very little to to bootstrap with today, that
uses a small
amount of memory.I need a cross compiler for my machine like K&R C
style compiler ,not the latest C+-#@? compiler.
I have no problem with a recursive decent compiler,I just have subtract
divide and mod reversed in places, something I want to avoid as well a
DISPLAY's like in Algol or Pascal.
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. Macros help to encapsulate things, but they're not an absolute
necessity. We used PL/M to provide a macro facility that ISIS ASM80
lacked because it was there and convenient.
The machine works on FPGA delopment card, see the
bliking lights on the
kitchen table. No hypothetical here.
1) Computer???? Check
2) Front panel? Check
3) Bootstrap? loader Check
4) Software???? No Check
Stage 4 is the problem.
Sigh. It's a shame that absolute (machine language) coding isn't taught
anymore. The 1620 (and probably other IBM hardware) even had coding
forms for it--pencil-and-paper assembly coding. My recollection is
that the absolute forms were on the reverse side of the SPS coding form.
If you don't have another system to provide cross compilation/assembly,
you bootstrap from machine code.
There are two things that can etch instruction codes (not symbolic
aliases) into one's memory, more or less permanently. One is absolute
machine-language coding; the other is analyzing postmortem memory dumps,
day after day.
--Chuck