Imp77 is the brainchild of Peter Salkeld Robertson - or "PSR" for short - who developed this variant of Imp primarily for his PhD thesis (also original scan). Imp77 is a three-pass compiler (the first to use that style at Edinburgh) which uses an intermediate code called I-Code. I-Code was later developed commercially by Peter's company, 3L (aka Lattice Logic Limited) in order to add multiple language support - a design which presages the recent Microsoft ".net" compiler design.

See also:


We have located sources of a few of Peter's compilers:


Here is the Imp11 for the PDP11 manual and sources. This was Peter's second version for the PDP-11. The earlier version was one of his first Imp compilers.

I-Code, much like Java bytecode, contains enough information to do a fair job at reconstituting the source from an I-Code file. However as we have absolutely no I-Code files preserved, writing such a decoder would be a pointless exercise. However I have made an effort at writing an I-Code to C translator as a substitute for an Imp77-to-C translator. Peter Stephens has also written an Imp80 to C translator which has proven very useful to this project, and a third attempt at a full Imp77 (and other dialects) to C is currently underway.

I-Code was improved several times over its lifetime in order to accomodate the addition of new languages as Peter's compiler business expanded :-) It was designed to support Imp and Simula; I know that it supported C and Pascal; I think there may have support for other languages too, including FORTRAN. It's interesting to look at Micro$oft's ".net" compiler system and see how similar it is, 20 years later, to Peter's final I-Code design.

I-code was to some extent an attempt at an UNCOL, but I think with hindsight it has turned out that the low-level language "C" has turned into what UNCOL was meant to be, because almost every language has a converter to C nowadays.

See Also: Imp and Imp80.


This page generated by HakiHaki