Skip to main content

Retrospection on the PQCC compiler structure

  • Session 9 Software Techology
  • Conference paper
  • First Online:
Foundations of Software Technology and Theoretical Computer Science (FSTTCS 1987)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 287))

  • 123 Accesses

Abstract

The Production Quality Compiler Compiler (PQCC) project was perhaps the most comprehensive effort in automated generation of high quality compilers. Unlike other compiler compiler projects, its focus was not limited to formalisable aspects of compilation. Consequently, much that was done in this large effort was empirical, and guided by heuristics employed by experienced compiler designers. Describing this empirical experience has been painful, primarily because of the inability to transcend detail, and due to the difficulty in abstracting principles which underlie the success of that experiment. In large measure, this is the reason for paucity of published material about this project, though considerable internal project documentation exists. This paper describes two separate experiments in compiler construction: the first was heavily influenced by the PQCC effort, though it was carried out at a reduced scale because of local handicaps; the second was a formalisation of some aspects of retargetable instruction selection. The simplifications in the first effort, and the formalisation in the second one, together point to a comparatively tractable synthesis of compiler structure which approximates that embodied in PQCC. This paper contributes to establishing the soundness of the empirical compiler structure in PQCC by presenting rational approximations to it.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Leverett, B.W., R.G.G. Cattell, S.O. Hobbs, J.M. Newcomer, A.H. Reiner, B.R. Schatz, and W.A. Wulf, "An Overview of the Production Quality Compiler Compiler project," Computer 13:8(1980), 38–49.

    Google Scholar 

  2. Glanville, R.S., and S.L. Graham, "A New Method for Compiler Code Generation," 5th ACM symposium on POPL, 1978, 231–240.

    Google Scholar 

  3. Allen, F.E., J.L. Carter, J. Fabri, J. Ferrante, W.H. Harrison, P.G. Loewner, and L.H. Trevillyan, "The Experimental Compiling System," IBM Journal Research and Development 24:6(1980), 695–715.

    Google Scholar 

  4. Giegrerich, R., "Introduction to the Compiler Generating System MUG2," Technical Report, TUM-INFO-7913, Technische Universitat Munchen, 1979.

    Google Scholar 

  5. Wulf, W.A., R.K. Johnson, C.B. Weinstock, S.O. Hobbs, and C.M. Geschke, "The Design of an Optimizing Compiler," American Elsevier, New York, 1975.

    Google Scholar 

  6. Wulf, W.A., M. Barbacci, B. Brosgol, R.G.G. Cattell, R. Conradi, S.O. Hobbs, P. Knueven, B.W. Leverett, J.M. Newcomer, A.H. Reiner, B.R. Schatz, D. Stryker, and F. Turini, "Specifications for the Phases of the PQCC," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University 1980.

    Google Scholar 

  7. Newcomer, J.M., "PQCC Intermediate Machine Description Language," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University 1981.

    Google Scholar 

  8. Brosgol, B., J.M. Newcomer, D.A. Lamb, D. Levine, M.S. Van Duesen, and W.A. Wulf, "TCOL-Ada," Computer Science Technical Report CMU-CS-80-105, Carnegie-Mellon University, 1980.

    Google Scholar 

  9. Wulf, W.A., and K.V. Nori, "Delayed Binding in PQCC Generated Compilers," Computer Science Technical Report CMU-CS-82-138, Carnegie-Mellon University, 1982.

    Google Scholar 

  10. Wulf, W.A., and K.V. Nori, "Code Selection in PQCC Generated Compilers," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University, 1983.

    Google Scholar 

  11. Cattell, R.G.G., "Formalization and Automatic Derivation of Code Generators," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1978.

    Google Scholar 

  12. Leverett, B.W., "Register Allocation in Optimizing Compilers," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1981.

    Google Scholar 

  13. Lamb, D.A., "IDL — Interface Description Language," PhD Disseartation, Computer Science Department, Carnegie-Mellon University, 1983.

    Google Scholar 

  14. Wulf, W.A., "PQCC: A Machine-Relative Compiler Technology," IEEE 4th International COMPSAC conference, 1980, 24–36.

    Google Scholar 

  15. Cattell, R.G.G., "Automatic Derivation of Code Generators from Machine Descriptions," ACM TOPLAS 2:2(1980), 173–190.

    Article  Google Scholar 

  16. Goos, G., W.A. Wulf, A. Evans Jr., and K.J. Butler, "DIANA An Intermediate Language for Ada," LNCS vol. 161, Springer-Verlag, 1983.

    Google Scholar 

  17. "C Cross Compiler Design Document," vol. I, II and III, Project document, Tata Research Development and Design Centre, Pune, 1985.

    Google Scholar 

  18. Kumar, S., and V.M. Malhotra, "Automatic Retargetable Code Generation: A New Technique," FST & TCS6 conference, LNCS vol. 241, Springer Verlag, 1986, 57–80.

    Google Scholar 

  19. Kumar, S., "Automatic Retargetable Code Generation," PhD Dissertation, Computer Science Department, Indian Institute of Technology, Kanpur, 1986.

    Google Scholar 

  20. Steel, T.B., Jr. "A First Version of UNCOL," Proc. Winter Joint Computer Conference, 1961, 371–378.

    Google Scholar 

  21. Davidson, J.W., and C.W. Fraser, "Code Selection Through Object Code Optimization," ACM TOPLAS 6:4(1984), 505–526.

    Article  Google Scholar 

  22. Tanenbaum, A.S., H. van Staveren, E.G. Keizer, and J.W. Stevenson, "A Practical Tool Kit for making Portable Compilers," CACM 26:9(1983), 654–660.

    Google Scholar 

  23. Tanenbaum, A.S., H. van Staveren, and J.W. Stevenson, "Using Peephole Optimization on Intermediate Code," ACM TOPLAS 4:1(1982), 21:36.

    Google Scholar 

  24. Nestor, J.R., and M. Beard, "Front End Generator User's Guide," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University, 1981.

    Google Scholar 

  25. Wulf, W.A., "BONSAI A Tree Transformer Generator," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University, 1981.

    Google Scholar 

  26. Stryker, D., "FLANGE: A Flow Analysis Generator User's Manual," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University.

    Google Scholar 

  27. Johnson, S.C., "Yacc — yet another compiler compiler," Computing Science Technical Report 32, AT & T Bell Laboratories, 1975.

    Google Scholar 

  28. Lesk, M.E., "Lex — a lexical analyzer generator," Computing Science Technical Report 39, AT & T Bell Laboratories, 1975.

    Google Scholar 

  29. Deodhar, R., and S.M. Jorapur, "Treegen — Abstract Syntax Tree Builder," Internal document, Tata Research Development and Design Centre, Pune, 1984.

    Google Scholar 

  30. Medina-Mora, R. "Syntax Directed Editing: Towards Integrated Programming Environment," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1982.

    Google Scholar 

  31. Jorapur, S.M., "TTGEN — Tree Transformer Generator," Internal document, Tata Research Development and Design Centre, Pune, 1985.

    Google Scholar 

  32. Hoffman, C.M., and M.J. O'Donnell, "Pattern Matching in Trees," Journal ACM 29:1(1982), 68–95.

    Article  Google Scholar 

  33. O'Donnell, M.J., "Computing in Systems Described by Equations," LNCS vol. 58, Springer-Verlag, 1977.

    Google Scholar 

  34. Jajoo, B.H., "A Programming System Based on Program Structure," PhD Dissertation, Computer Science Department, Indian Institute of Technology, Kanpur, 1980.

    Google Scholar 

  35. Joshi, S.M., and K.V. Nori, "Equational Formulation of Data Flow Analysis," Internal document, Tata Research Development and Design Centre, Pune, 1987.

    Google Scholar 

  36. Joshi, R.R., and K.V. Nori, "An Intermediate Representation of Programs with Continuation Free Semantics," Internal document, Tata Research Development and Design Centre, Pune, 1987.

    Google Scholar 

  37. Aho, A.V., and M.J. Corasick, "Efficient String Matching: an aid to Bibliographic Search," CACM 18:6(1975), 333–340.

    Google Scholar 

  38. Sethi, R., and J.D. Ullman, "The Generation of Optimal Code for Arithmetic Expressions," Journal ACM 17:4(1970), 715–728.

    Article  Google Scholar 

  39. Chaitin, G.J., "Register Allocation and Spilling via Graph Coloring," SIGPLAN symposium on Compiler Construction, 1982, 98–105.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Kesav V. Nori

Rights and permissions

Reprints and permissions

Copyright information

© 1987 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Nori, K.V., Kumar, S., Kumar, M.P. (1987). Retrospection on the PQCC compiler structure. In: Nori, K.V. (eds) Foundations of Software Technology and Theoretical Computer Science. FSTTCS 1987. Lecture Notes in Computer Science, vol 287. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-18625-5_71

Download citation

  • DOI: https://doi.org/10.1007/3-540-18625-5_71

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-18625-0

  • Online ISBN: 978-3-540-48033-4

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics