The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: ron minnich <rminnich@gmail.com>
To: Peter Yardley <peter.martin.yardley@gmail.com>
Cc: Marc Rochkind <mrochkind@gmail.com>, "tuhs@tuhs.org" <tuhs@tuhs.org>
Subject: [TUHS] Re: History of non-Bell C compilers?
Date: Mon, 11 Mar 2024 17:30:19 -0700	[thread overview]
Message-ID: <CAP6exYKNc7vBcK5gnnZN+iVSPRCwzUhG0nWCAF6x+6Mt7v5ddg@mail.gmail.com> (raw)
In-Reply-To: <EC9B447B-924B-47D8-AF26-F86D3EA804A4@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 4891 bytes --]

One of the neatest compilers I worked with was Eric Biederman's romcc.

"romcc is a C compiler which produces binaries which do not rely on RAM, but
instead only use CPU registers."

We used romcc for 15 years or so. It was critical to getting DRAM and
Hypertransport topology working on the Opteron. Remember: at
power-on/reset, RAM is dead, dead, dead, and getting it going on newer
systems is (literally) billions of instructions. So, no ram. The only "ram"
romcc had were the general purpose registers. Later, eric added support for
the SIMD registers, and "memory" grew a few hundred bytes. No memory, no
stack: 100% inlining. romcc knew how to use puddle arithmetic and all the
other tricks. It was amazing.

It is a full ANSI C compiler (as of 2006 ANSI C) in 25KLOC code, in one
file: https://github.com/wt/coreboot/blob/master/util/romcc/romcc.c

The story of its creation, as told to me by the Linux NetworX CTO ca 2004:
Eric worked at Linux NetworX at the time, and they were shipping
LinuxBIOS-based systems. Everyone working with Opteron was suffering with
assembly. Eric vanished for 30 days, and on the 31st day returned from the
mountain (or his apartment I guess) with romcc, and It Was Good. Really
good. The code we wrote for Opteron Hypertransport was far better than
AMDs; they even admitted it to us later.  We could even run with empty
Socket 0; they could not.

Last I checked, it still builds and 100 or so regression tests work just
fine.



On Mon, Mar 11, 2024 at 3:28 PM Peter Yardley <
peter.martin.yardley@gmail.com> wrote:

> I used the DEC VMS C compiler extensively while I was at NSWIT. I ported a
> lot of Berkley (I think) C code to VMS. Some of their VLSI design suite,
> KIC etc. There weren’t a lot of changes to make, the compiler and library
> was pretty K&R from what I remember. The usual small header issues applied.
> VMS IO is a bit different from UNIX IO  but they had a mode (stream I
> think) that meant minimal changes to UNIX code.
>
>
> http://bitsavers.informatik.uni-stuttgart.de/pdf/dec/vax/lang/c/AI-L370C-TE_Guide_to_VAX_C_V2.3_Mar1987.pdf
>
> It did help that the code I was working with was pretty damn good. I learn
> C porting KIC to VMS.
>
> > On 12 Mar 2024, at 7:44 AM, Marc Rochkind <mrochkind@gmail.com> wrote:
> >
> > Since it came up in this thread, here's my review of Coherent in BYTE
> Magazine (1985):
> >
> > https://www.mrochkind.com/mrochkind/docs/Byte-Pick-Coherent-Theos.pdf
> >
> > Marc
> >
> > On Mon, Mar 11, 2024 at 11:13 AM Paul Ruizendaal <pnr@planet.nl> wrote:
> > On Thu, Mar 7, 2024, 4:14 PM Tom Lyon <pugs78 at gmail.com> wrote:
> >
> > > For no good reason, I've been wondering about the early history of C
> > > compilers that were not derived from Ritchie, Johnson, and Snyder at
> Bell.
> > > Especially for x86.  Anyone have tales?
> > > Were any of those compilers ever used to port UNIX?
> >
> > An unusual one would be the “revenue bomb” compiler that Charles Simonyi
> and Richard Brodie did at Microsoft in 1981.
> >
> > This compiler was intended to provided a uniform environment for the
> menagerie of 8 and 16-bit computers of the era. It compiled to a byte code
> which executed through a small interpreter. This by itself was hardly new
> of course, but it had some unique features. It generated code in overlays,
> so that it could run a code base larger than 64KB (but it defined only one
> data segment). It also defined a small set of “system” commands, that
> allowed for uniform I/O. I still have the implementation spec for that
> interpreter somewhere.
> >
> > This compiler was used for the first versions of Multiplan and Word, and
> my understanding is that the byte code engine was later re-used in Visual
> Basic. I think the compiler also had a Xenix port, maybe it even was Xenix
> native (and at this time, Xenix would still essentially have been V7).
> >
> > I am not sure to what extent this compiler was independent of the Bell
> compilers. It could well be that it was based on PCC, Microsoft was a Unix
> licensee after all and at the time busy doing ports. On the other hand,
> Charles Simonyi would certainly have been capable of creating his own from
> scratch. I do know that this compiler preceded Lattice C, the latter of
> which was distributed by Microsoft as Microsoft C 1.0.
> >
> > Maybe others know more about this Simonyi/Brodie compiler?
> >
> > Paul
> >
> > Notes:
> > http://www.memecentral.com/mylife.htm
> >
> https://web.archive.org/web/20080905231519/http://www.computerworld.com/softwaretopics/software/appdev/story/0%2C10801%2C76413%2C00.html
> > http://seefigure1.com/images/xenix/xenix-timeline.jpg
> >
> >
> > --
> > My new email address is mrochkind@gmail.com
>
> Peter Yardley
> peter.martin.yardley@gmail.com
>
>

[-- Attachment #2: Type: text/html, Size: 6541 bytes --]

  reply	other threads:[~2024-03-12  0:30 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-11 17:12 Paul Ruizendaal
2024-03-11 20:44 ` Marc Rochkind
2024-03-11 22:28   ` Peter Yardley
2024-03-12  0:30     ` ron minnich [this message]
2024-03-12 13:31       ` Larry Stewart
2024-03-12 16:41     ` Paul Winalski
2024-03-12 14:55   ` Henry Bent
2024-03-12 17:17     ` Marc Rochkind
2024-03-13 14:37       ` Clem Cole
2024-03-13 15:28         ` Marc Rochkind
2024-03-13 15:33           ` Warner Losh
2024-03-13 15:50             ` [TUHS] PC/IX, VPIX, DOS/merge, etc. [was " Charles H Sauer (he/him)
2024-03-13 15:53           ` [TUHS] " Clem Cole
2024-03-12 15:42 ` Paul Ruizendaal
     [not found] <aee297f1-2f6a-4620-87f7-f1672ae03b61@osta.com>
2024-03-15  3:34 ` Heinz Lycklama
  -- strict thread matches above, loose matches on Subject: below --
2024-03-12 23:08 Steve Simon
2024-03-07 23:14 [TUHS] " Tom Lyon
2024-03-07 23:24 ` [TUHS] " Warner Losh
2024-03-07 23:39   ` Dave Horsfall
2024-03-07 23:49     ` Larry McVoy
2024-03-07 23:56       ` Luther Johnson
2024-03-08 14:03         ` John Foust via TUHS
2024-03-07 23:59       ` Greg 'groggy' Lehey
2024-03-08  0:08         ` Rich Salz
2024-03-08  0:30           ` Warner Losh
2024-03-08  0:57             ` Rob Pike
2024-03-08  1:08               ` Bakul Shah via TUHS
2024-03-08  1:10                 ` Rob Pike
2024-03-08  1:12                   ` Rob Pike
2024-03-08  1:22                     ` Bakul Shah via TUHS
2024-03-08  9:33               ` arnold
2024-03-08  9:45                 ` Wesley Parish
2024-03-08 13:06                   ` Luther Johnson
2024-03-08 18:33               ` William H. Mitchell
2024-03-10  3:14                 ` Adam Thornton
2024-03-11 22:21       ` Phil Budne
2024-03-07 23:52   ` Warner Losh
2024-03-08  0:15     ` Charles H Sauer (he/him)
2024-03-08  0:30       ` Marc Rochkind
2024-03-08  0:54         ` Heinz Lycklama
2024-03-08  1:48           ` segaloco via TUHS
2024-03-08  2:12             ` Tom Lyon
2024-03-08  2:13     ` Lawrence Stewart
2024-03-08  3:15     ` Jonathan Gray
2024-03-07 23:24 ` Luther Johnson
2024-03-07 23:27   ` Luther Johnson
2024-03-07 23:44     ` Tom Lyon
2024-03-08  0:24       ` Marc Rochkind
2024-03-08  1:27         ` Jeffry R. Abramson
2024-03-10  2:13         ` Greg A. Woods
2024-03-08  2:26 ` Will Senn
2024-03-08  3:03   ` Peter Yardley
2024-03-08  3:28 ` George Michaelson
2024-03-08  3:58   ` Luther Johnson
2024-03-08  5:53 ` Lars Brinkhoff
2024-03-08 13:42 ` Henry Bent
2024-03-08 14:00   ` arnold
2024-03-08 14:16   ` Warner Losh
2024-03-08 15:44 ` Paul Winalski
2024-03-08 17:18   ` Adam Thornton
2024-03-10  2:31 ` Damian Wildie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAP6exYKNc7vBcK5gnnZN+iVSPRCwzUhG0nWCAF6x+6Mt7v5ddg@mail.gmail.com \
    --to=rminnich@gmail.com \
    --cc=mrochkind@gmail.com \
    --cc=peter.martin.yardley@gmail.com \
    --cc=tuhs@tuhs.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).