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
