I saw this post and it reminded me of a meeting that Dennis and I had
with Bill Wulf. At one point, Dennis decided to write an optimizer but
gave up after a week or two because when he had coded the data
structures he needed he had filled up the PDP-11 memory! It was a very
strong part of the Unix meme that Unix and C would run on small
computers since most of the universities couldn't afford bigger ones at
the time.
When PCC came along and started running on 32-bit machines, I started
thinking about algorithms for optimization. A problem that I had no
good solution for could be illustrated by a simple piece of code:
x = *p;
y = *q;
q gets changed
*q = z;
The question is, do I need to reload x now because q might have been
changed to point to the same place as p? At around this time, Al Aho
was invited to go to CMU and give a talk, and he invited me to come with
him. We spent about an hour and a half one-on-one with Bill Wulf -- I
seem to remember a lot of mutual respect going on. But when I asked him
about my problem, he really didn't have much to say about it. I finally
got him to agree that his compiler had a bug. But he said there was a
flag they could set on the compiler that would turn of optimization and
if your program had mysterious bugs, you should use the flag.
I recall that Al, always in search of better algorithms, was a bit
disappointed -- I was a bit more pragmatic about it. On the whole, it
was a good meeting, and the "Engineering ... Compiler" book was one of
my favorites when it came out.
Steve
---
On 2021-06-19 09:59, Clem Cole wrote:
On Sat, Jun 19, 2021 at 12:33 PM Henry Bent
<henry.r.bent(a)gmail.com> wrote:
Wait, so it was easier to write an emulator for a
PDP-10 binary than it would have been to port BLISS to the PDP-11? Given the different
word sizes I would not have expected that.
BLISS-11 was (way) too big to run in the 64K address of the PDP-11 (even separated I/D).
Originally, it was a PDP-10 cross compiler and later moved to the Vax. It generated much
better code than the original Ritchie or later Johnson compilers. The code
generator/optimizer was famous (literally the book on code optimization was written about
it, called of course: "The Design of an Optimizing Compiler" [1] by Wulf and
some of his students [ISBN 0444001581] - _a.k.a._ 'The Green Book' worth reading
BTW.
Later on, DEC's TLG tried at least twice that I know of to make it self-hosting but
gave up. Long story (and definitely a different thread) if DEC has not screwed up the
marketing of BLISS, I suspect it might have given C a run for the money. But BLISS _vs_.
C is a great example of Cole's law that _Simple Economics always beats Sophisticated
Architecture_ [and using Christensen's 'disruptive theory -- it gets better and
supplants the incombent].
Anyway, the compiler/code generator/linker for DEC Fortran-IV for RT-11, RSX, and DOS-11
was written in BLISS-11. So for CU to retarget it for V6 they needed a PDP-10, which they
did not have. So they wrote a simulator. I remember when they gave a talk about it at
Usenix, somebody asked them how well Tenex ran on it.
Did they have a cover sheet or something
equivalent that they came with? I'm having trouble imagining dealing with that much
unindexed data on an early system.
Not to my knowledge. Two things that I believe we need to do for the TUHS archives to be
even more meaningful is 1.) decode them from tp/ar -- even if you read the tape, they are
packed together in v5/v6 ar files which are PDP-11 binary. 2.) Create an index of what is
there.
I've thought about both things but have way too much on my plate to do it myself.
Fascinating. Thank you as always for the
insight.
Most welcome.
Clem
ᐧ