Where did "middle end" come from

Christopher F Clark <christopher.f.clark@compiler-resources.com>
Sun, 2 Jan 2022 01:20:59 +0200

          From comp.compilers

Related articles
Where did "middle end" come from christopher.f.clark@compiler-resources.com (Christopher F Clark) (2022-01-02)
Re: Where did "middle end" come from derek@NOSPAM-knosof.co.uk (Derek Jones) (2022-01-02)
RE: Where did "middle end" come from christopher.f.clark@compiler-resources.com (Christopher F Clark) (2022-01-03)
Re: Where did "middle end" come from derek@knosof.co.uk (Derek Jones) (2022-01-03)
| List of all articles for this month |

From: Christopher F Clark <christopher.f.clark@compiler-resources.com>
Newsgroups: comp.compilers
Date: Sun, 2 Jan 2022 01:20:59 +0200
Organization: Compilers Central
Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="42461"; mail-complaints-to="abuse@iecc.com"
Keywords: history, comment
Posted-Date: 01 Jan 2022 19:18:34 EST

While I am certain we were not the first to use the term, I'm pretty
certain that we were using "middle end" to describe parts of the TSI
compilers (the same PL/I compiler DEC bought and a series of other
ones written by various companies (including in house) that used many
of the same components that were neither completely language nor
completely target specific. This would have been around 1985 or so.


The "front ends" consisted of the lexers and parsers for the languages.


The "back end" was essentially just the code generator (and peephole
optimizer once we implemented one).


The "middle end" included the symbol table, the intermediate language,
the storage allocation routines (i.e. how stack frames and static
memory areas were laid out since we used the same layout for all the
architectures), and the global optimizer. And the phases front,
middle, and back were sequentially ordered in terms of how they were
executed. I.e. The front end ran first, then the middle end, and
finally the back end, although the symbol table and intermediate
language both spanned the entire compilation process. The compiler
option processing was also included in the middle end even though it
preceded the front end.


Now, we grouped the latter two into the "common envelope" (although we
originally called it just the "common backend" and thought of the
middle end as part of the back end). The common envelope team grew to
be almost as many people as the sum of the front end teams put
together and had a full-time manager running the team.


Now, some parts of both the middle and back ends had language specific
hooks in them (mostly for FORTRAN or COBOL, but a few for Pascal and
C). The C compiler was short-lived though and a completely new one
was written.


--
******************************************************************************
Chris Clark email: christopher.f.clark@compiler-resources.com
Compiler Resources, Inc. Web Site: http://world.std.com/~compres
23 Bailey Rd voice: (508) 435-5016
Berlin, MA 01503 USA twitter: @intel_chris
------------------------------------------------------------------------------
[FWIW, the term first appeared in comp.compilers in 1993. -John]


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.