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 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 > ᐧ Links: ------ [1] https://www.amazon.com/Design-Optimizing-Compiler-William-Allan/dp/0444001581