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 for the m6809
Skimp was either a late 2nd yr, or early 3rd year exercise. Before we were let loose on Skimp we had already had a taste of compiler writing from Peter Schofield. Peter taught us table-driven top-down recursive-descent parsing - ie the same parser technique that was originated in Brooker's Compiler-Compiler (aka Atlas Autocode) and was used in most subsequent Edinburgh compilers. We implemented a parser table generator, wrote a grammar for an even simpler version of Imp, wrote a parser and finally wrote a code generator (well, assembly code generator) for the PDP9/15. I recently came across a paper listing of my PDP15 compiler which I have yet to scan. I remember that the space available on the PDP9/15 was so tight that I had to rename most of my variables to single letters, just to squeeze in a few constructs like loops. Writing this compiler gave me a huge amount of respect for Hamish Dewar who had written a full Imp compiler which fitted in the same amount of store.
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