This is G o o g l e's cache of http://history.dcs.ed.ac.uk/history/DJRSkimp as retrieved on 19 Sep 2006 21:47:06 GMT. G o o g l e's cache is the snapshot that we took of the page as we crawled the web.
The page may have changed since that time. Click here for the current page without highlighting.
This cached page may reference images which are no longer available. Click here for the cached text only. To link to or bookmark this page, use the following url: http://www.google.com/search?q=cache:-f_Mzl0SImgJ:history.dcs.ed.ac.uk
Google is neither affiliated with the authors of this page nor responsible for its content.
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 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.