skip to main content
article
Free access

A practical tool kit for making portable compilers

Published: 01 September 1983 Publication History

Abstract

The Amsterdam Compiler Kit is an integrated collection of programs designed to simplify the task of producing portable (cross) compilers and interpreters. For each language to be compiled, a program (called a front end) must be written to translate the source program into a common intermediate code. This intermediate code can be optimized and then either directly interpreted or translated to the assembly language of the desired target machine. The paper describes the various pieces of the tool kit in some detail, as well as discussing the overall strategy.

References

[1]
Graham, S.L. Table-driven code generation. Computer 13, 8 (August 1980), 25-34. A discussion of systematic ways to do code generation, in particular, the idea of having a table with templates that match parts of the parse tree and convert them into machine instructions.
[2]
Haddon, B.K. and Waite, W.M. Experience with the universal intermediate language Janus. Software Practice and Experience 8, 5 (Sept.- Oct. 1978), 601-616. An intermediate language for use with Algol 68, Pascal, etc. is described. The paper discusses some of the problems encountered and how they were dealt with.
[3]
Johnson, S.C. A portable compiler: Theory and practice. Ann. ACM Symp. Prin. Prog. Lang., Jan. 1978. A cogent discussion of the portable C compiler. Particularly interesting are the author's thoughts on the value of computer science theory.
[4]
Leverett, B.W, Cattell, R.G.G., Hobbs, S.O., Newcomer, J.M., Reiner, A.H, Schatz, B.R., and Wulf, W.A. An overview of the productionquality compiler-compiler project. Computer 13, 8 (August 1980), 38- 49. PQCC is a system for building compilers similar in concept but different in details from the Amsterdam Compiler Kit. The paper describes the intermediate representations used and the code generation strategy.
[5]
Lowry, E.S. and Medlock, C.W. Object code optimization. Comm. ACM 12, 1 (Jan. 1969), 13-22. A classic paper on global object code optimization. It covers data flow analysis, common subexpressions, code motion, register allocation, and other techniques.
[6]
Nori, K.V., Ammann, U., Jensen, K., and Nageli, H. The Pascal P compiler implementation notes. Eidgen. Tech. Hochschule, Zurich, 1975. A description of the original P-code machine, used to transport the Pascal-P compiler to new computers.
[7]
Steel, T.B., Jr. UNCOL:the myth and the fact. In Ann. Bey. Auto. Prog. Goodman, R. (Ed.), Vol. 2., (1960), 325-344. An introduction to the UNCOL idea by its originator.
[8]
Steel, T.B., lr. A first version of UNCOL. Proc. Western }oint Comp. Conf., (1961), 371-377. The first detailed proposal for an UNCOL. By current standards it is a primitive language, but it is interesting for its historical perspective.
[9]
Tanenbaum, A.S., van Staveren, H., and Stevenson, J.W. Using peephole optimization on intermediate code. ACM Trans. Prog. Lang. and Sys. 3, 1 (Jan. 1982), 21-36. A detailed description of a table-driven peephole optimizer. The driving table provides a list of patterns to match as well as the replacement text to use for each successful match.
[10]
Tauenbaum, A.S., Stevenson, J.W., Keizer, E.G., and van Staveren, H. Description of an experimental machine architecture for use with block structured languages, lnformatica Rapport 81, Vrije Universiteit, Amsterdam, 1983. The defining document for EM.
[11]
Tanenbanm, A.S. Implications of structured programming for machine architecture. Comm. ACM 21, 3 (March 1978), 237-246. The background and motivation for the design of EM. This early version emphasized the idea of interpreting the intermediate code (then called EM-1) rather than compiling it.

Cited By

View all
  • (2024)Design of Software Representation Languages: A Historical PerspectiveProceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695649(104-112)Online publication date: 17-Oct-2024
  • (2019)Discovering Eastern Europe PCs by Hacking Them … TodayHistories of Computing in Eastern Europe10.1007/978-3-030-29160-0_14(279-294)Online publication date: 12-Sep-2019
  • (2018)An Eco-Friendly Efficient Cloud-Searching Technique With DelayInternational Journal of Green Computing10.4018/IJGC.20180101029:1(20-34)Online publication date: Jan-2018
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Communications of the ACM
Communications of the ACM  Volume 26, Issue 9
Sept. 1983
76 pages
ISSN:0001-0782
EISSN:1557-7317
DOI:10.1145/358172
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 September 1983
Published in CACM Volume 26, Issue 9

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. compiler
  2. interpreter
  3. portability
  4. translator

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)236
  • Downloads (Last 6 weeks)23
Reflects downloads up to 20 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Design of Software Representation Languages: A Historical PerspectiveProceedings of the 17th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3687997.3695649(104-112)Online publication date: 17-Oct-2024
  • (2019)Discovering Eastern Europe PCs by Hacking Them … TodayHistories of Computing in Eastern Europe10.1007/978-3-030-29160-0_14(279-294)Online publication date: 12-Sep-2019
  • (2018)An Eco-Friendly Efficient Cloud-Searching Technique With DelayInternational Journal of Green Computing10.4018/IJGC.20180101029:1(20-34)Online publication date: Jan-2018
  • (2017)Implementation IssuesA Practical Approach to Compiler Construction10.1007/978-3-319-52789-5_9(235-245)Online publication date: 23-Mar-2017
  • (2016)Lessons learned from 30 years of MINIXCommunications of the ACM10.1145/279522859:3(70-78)Online publication date: 25-Feb-2016
  • (2015)Toward open-source compilers in a cloud-based environment: the need and current challenges2015 International Conference on Open Source Software Computing (OSSCOM)10.1109/OSSCOM.2015.7372684(1-6)Online publication date: Sep-2015
  • (2011)Generation of Intermediate CodePrinciples of Compilers10.1007/978-3-642-20835-5_10(285-312)Online publication date: 2011
  • (2006)A supercomputer program development systemSoftware: Practice and Experience10.1002/spe.438017100217:10(663-683)Online publication date: 30-Oct-2006
  • (2006)Implementing a scalar C compiler on the cyber 205Software: Practice and Experience10.1002/spe.438014090714:9(867-888)Online publication date: 30-Oct-2006
  • (2005)Near Overhead-free Heterogeneous Thread-migration2005 IEEE International Conference on Cluster Computing10.1109/CLUSTR.2005.347042(1-10)Online publication date: Sep-2005
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media