Multi-language, multi-target compiler development: Evolution of the Gardens Point compiler project
The Gardens Point project started in 1987 as an attempt to make Modula-2 available on a variety of 32-bit Unix platforms. Since that time, it has evolved into a flexible platform for research into compiler construction and language implementation. Gardens point compilers are available on about a dozen platforms, and are mostly freeware.
Currently, the gardens point infrastructure is used for a variety of research projects in areas such as code selection, global optimization, register allocation, and exception handling. There are also a variety of language research issues which are being pursued by the group.
This paper sets out a brief history of the project, and describes the insights which have come from the implementation of a variety of languages on most of the major current computer architectures.
KeywordsAbstract Machine Exception Handling Control Flow Graph Register Allocation Code Selector
Unable to display preview. Download preview PDF.
- 1.U Ammann. Pascal, the Language and its Implementation, Chapter Code Generation for a Pascal Compiler. John Wiley and Sons, 1981.Google Scholar
- 2.Ken Arnold and James Gosling. The Java Programming Language. Addison-Wesley, 1996.Google Scholar
- 3.Marc M. Brandis and Hanspeter Mössenböck. Single-pass generation of static single assignment form for structured languages. ACM Transactions on Programming Languages and Systems, Volume 16, Number 6, pages 1684–1698, 1994.Google Scholar
- 4.P Briggs, K D Cooper, K Kennedy and L Torczon. Coloring heuristics for register allocation. In Proc. ACM SIGPLAN'89 Confr. Programming Language Design and Implementation, Volume 26 of SIGPLAN Notices. ACM, 1989.Google Scholar
- 5.G J Chaitin. Register allocation and spilling via graph coloring. In Proc. ACM SIGPLAN'82 Symposium on Compiler Construction, Volume 19 of SIGPLAN Notices, 1989.Google Scholar
- 6.Diane Corney. The Luna language report. http://www.fit.qut.edu.au/∼corney/luna.ps. Language report for the Luna language.Google Scholar
- 7.Ron Cytron, Jeanne Ferrante, Barry K. Rosen, Mark N. Wegman and F.Kenneth Zadeck. Efficiently computing static single assignment form and the control dependence graph. ACM Transactions on Programming Languages and Systems, Volume 13, Number 4, pages 451–490, 1991.Google Scholar
- 8.E W Dijkstra. Algol 60 translation. Supplement ALGOL Bulletin, Volume 10, 1960.Google Scholar
- 9.C W Fraser and D R Hanson. A Retargetable C Compiler: Design and Implementation. Benjamin Cummings, 1995.Google Scholar
- 10.K J Gough, C Cifuentes, D Corney, J Hynd and P Kolb. An experiment in mixed compilation/interpretation. In Proceedings of ACSC-14, Hobart, Australia, 1992. Australian Computer Society.Google Scholar
- 11.K John Gough. Bottom up tree rewriting with MBURG: the mburg reference manual. ftp://ftp.fit.qut.edu.au/in directory/pub/coco. Reference manual for version 0.8 of MBURG. Complete source code is available at the same URL.Google Scholar
- 12.K John Gough. The DCode intermediate program representation: Reference manual and report. ftp://ftp.fit.qut.edu.au in file/pub/papers/jmlc2.ps.Z. Online document specifying the intermediate form used by the gardens point compilers.Google Scholar
- 13.K John Gough. A new type-constructor for modular languages. ftp://ftp.fit.qut.edu.au/in file/pub/papers/jmlc2.ps.Z. Technical report on extensible arrays.Google Scholar
- 14.K John Gough. Bottom-up tree rewriting tool MBURG. SIGPLAN Notices, Volume 31, Number 1, 1996.Google Scholar
- 15.K John Gough and Jeffrey Ledermann. Register allocation in the Gardens Point compilers. In Proceedings ACSC18, Adelaide, Australia. Australian Computer Science Society, 1995.Google Scholar
- 16.K John Gough and Jeffrey Ledermann. Optimal code-selection using MBURG. In Proceedings ACSC20, Sydney, Australia. Australian Computer Science Society, 1997.Google Scholar
- 17.R W Gray, W P Heuring, S P Levi, A M Sloane and W Waite. Eli: a complete, flexible compiler construction system. Communications of the A CM, Volume 35, pages 121–131, Feb 1992.Google Scholar
- 18.ISO SC22/WG13. Modula-2-International Standard: IS 10154. British Standards Institution, June 1996.Google Scholar
- 19.J Lederman, K J Gough, J Hynd and P Sinfield. The port of GPM to the ALPHA architecture. Technical report, Distributed Systems Technology Centre, Brisbane, Australia, 1994.Google Scholar
- 20.Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1996.Google Scholar
- 21.Steven Omohundro. The Sather programming language. Technical report, ICSI, Berkley, California, 1994.Google Scholar
- 22.D R Perkins and R L Sites. Machine indepedent Pascal code optimization. In Proc. ACM SIGPLAN'79 Confr. Programming Language Design and Implementation, Volume 14 of SIGPLAN Notices, pages 201–207, 1979.Google Scholar
- 23.Clemens Szyperski. Gardens Project home page. http://www.fit.qut.edu.au/-∼szypersk/Gardens. Includes an index to other Gardens related documents.Google Scholar
- 24.Pat Terry. Programming Language Translation: A Practical Approach. Addison-Wesley, 1985.Google Scholar
- 25.Niklaus Wirth. The design of the Pascal compiler. Software: Practice and Experience, Volume 4, pages 309–333, 1971.Google Scholar