Multi-language, multi-target compiler development: Evolution of the Gardens Point compiler project

  • K. John Gough
Invited Talks
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1204)


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.


Abstract Machine Exception Handling Control Flow Graph Register Allocation Code Selector 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    U Ammann. Pascal, the Language and its Implementation, Chapter Code Generation for a Pascal Compiler. John Wiley and Sons, 1981.Google Scholar
  2. 2.
    Ken Arnold and James Gosling. The Java Programming Language. Addison-Wesley, 1996.Google Scholar
  3. 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. 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. 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. 6.
    Diane Corney. The Luna language report.∼corney/ Language report for the Luna language.Google Scholar
  7. 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. 8.
    E W Dijkstra. Algol 60 translation. Supplement ALGOL Bulletin, Volume 10, 1960.Google Scholar
  9. 9.
    C W Fraser and D R Hanson. A Retargetable C Compiler: Design and Implementation. Benjamin Cummings, 1995.Google Scholar
  10. 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. 11.
    K John Gough. Bottom up tree rewriting with MBURG: the mburg reference manual. directory/pub/coco. Reference manual for version 0.8 of MBURG. Complete source code is available at the same URL.Google Scholar
  12. 12.
    K John Gough. The DCode intermediate program representation: Reference manual and report. in file/pub/papers/ Online document specifying the intermediate form used by the gardens point compilers.Google Scholar
  13. 13.
    K John Gough. A new type-constructor for modular languages. file/pub/papers/ Technical report on extensible arrays.Google Scholar
  14. 14.
    K John Gough. Bottom-up tree rewriting tool MBURG. SIGPLAN Notices, Volume 31, Number 1, 1996.Google Scholar
  15. 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. 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. 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. 18.
    ISO SC22/WG13. Modula-2-International Standard: IS 10154. British Standards Institution, June 1996.Google Scholar
  19. 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. 20.
    Tim Lindholm and Frank Yellin. The Java Virtual Machine Specification. Addison-Wesley, 1996.Google Scholar
  21. 21.
    Steven Omohundro. The Sather programming language. Technical report, ICSI, Berkley, California, 1994.Google Scholar
  22. 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. 23.
    Clemens Szyperski. Gardens Project home page.∼szypersk/Gardens. Includes an index to other Gardens related documents.Google Scholar
  24. 24.
    Pat Terry. Programming Language Translation: A Practical Approach. Addison-Wesley, 1985.Google Scholar
  25. 25.
    Niklaus Wirth. The design of the Pascal compiler. Software: Practice and Experience, Volume 4, pages 309–333, 1971.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1997

Authors and Affiliations

  • K. John Gough
    • 1
  1. 1.Queensland University of TechnologyBrisbaneAustralia

Personalised recommendations