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.



On 2021-06-19 09:59, Clem Cole wrote:


On Sat, Jun 19, 2021 at 12:33 PM Henry Bent <henry.r.bent@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"  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.