David Rees wrote a cut-down version of the Imp language (which was actually at about the same level of complexity as the original Atlas Autocode) which was used for compiler teaching for many years. I remember hearing at the time I was in his class that Skimp could be used for bootstrapping full Imp compilers but I thought that was just theoretical. When we were researching old archives for this project, we came across an early PDP-11 compiler from the ERCC (I think perhaps by Stephen Hayes or Keith Yarwood; I'm not sure which) which was clearly a direct port of Skimp. And more recently Andy Davis bootstrapped Peter Robertson's Imp77 compiler by using Skimp - I knew that Imp77's pass-1 used a subset of Imp77 but I thought that was so it would go easy on the code generator - I didn't realise until then that pass-1 was written in such simple Imp that it was actually compilable with Skimp! So Skimp was a significant part of Edinburgh compiler culture from the early days right up until the present. We have found the original Skimp sources and have a scan of the manual as bitmaps for web viewing and a pdf for printing, and very recently we have added (see below) a text version which is currently being OCR'd by BrianFoley; we have a port of Skimp to the Interdata series, the PDP-11 and the Motorola 6809; and we have the original interpreter for the Skimp abstract machine which was the original bootstrapping method for Skimp as the interpreter was very simple and could be hand-translated into any convenient language. (Skimp generates HAL which is a Hypothetical Assembly Language as opposed to the coincidentally-named High-Level Assembly Language of Hamish Dewar; Skimp's HAL is easily converted to a target machine code by use of functionally equivalent macros - an early verison of static binary translation...)


Skimp has also been used as a basis for other projects which require some sort of language as input, such as Arthur and Sim. A spin-off program from Skimp is a stand-alone version of its parser generator, Reduce.



This page generated by HakiHaki