The amber machine
The Amber machine is a stack machine designed as an intermediate language for compiling higher-order languages. The current version is specialized for the Amber language. The machine supports a set of basic and structured data types, functional closures, signals, bitmap graphics, persistent objects and meta-level execution. The latter is needed as the Amber compiler is entirely written in Amber (above the Amber machine level) and needs to switch level when executing a program it has just compiled.
A set of implementation strategies are admissible for this machine, including byte-code interpretation, threaded code interpretation and compilation to native code. The current implementation is based on a byte-code interpreter and a one-space compacting collector, and runs on a Macintosh.
KeywordsInput Stream Output Stream Garbage Collector Text Object Current Closure
Unable to display preview. Download preview PDF.
- [Apple 84]Apple Computer: "Inside Macintosh".Google Scholar
- [Cardelli 83]L.Cardelli: "The Functional Abstract Machine", AT&T Bell Laboratories Technical Report TR-107, 1983. Also in "Polymorphism, the ML/LCF/Hope Newsletter", vol I, no. 1, 1983.Google Scholar
- [Cardelli 84]L.Cardelli: "Amber", AT&T Bell Laboratories Technical Memorandum, 11271-840924-10TM, 1984.Google Scholar
- [Cousineau 85]G.Cousineau, P-L.Curien, M.Mauny: "The Categorical Abstract Machine", to appear.Google Scholar
- [Landin 64]P.J. Landin: "The Mechanical Evaluation of Expressions", Computer Journal, Vol 6, No. 4, 1964, pp. 308–320.Google Scholar
- [Pike 84]R.Pike, L.Guibas, D.Ingalls: "Bitmap Graphics", SIGGRAPH '84 course notes.Google Scholar
- [Turner 79]D.A. Turner: "A new implementation technique for applicative languages", Software Practice and Experience, vol 9, 31–49, 1979.Google Scholar