Advertisement

Retrospection on the PQCC compiler structure

  • K. V. Nori
  • Sanjeev Kumar
  • M. Pavan Kumar
Session 9 Software Techology
Part of the Lecture Notes in Computer Science book series (LNCS, volume 287)

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.

Keywords

Internal Representation Computer Science Department Abstract Syntax Source Language Register Allocation 
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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 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. 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. 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. 4.
    Giegrerich, R., "Introduction to the Compiler Generating System MUG2," Technical Report, TUM-INFO-7913, Technische Universitat Munchen, 1979.Google Scholar
  5. 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. 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. 7.
    Newcomer, J.M., "PQCC Intermediate Machine Description Language," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University 1981.Google Scholar
  8. 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. 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. 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. 11.
    Cattell, R.G.G., "Formalization and Automatic Derivation of Code Generators," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1978.Google Scholar
  12. 12.
    Leverett, B.W., "Register Allocation in Optimizing Compilers," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1981.Google Scholar
  13. 13.
    Lamb, D.A., "IDL — Interface Description Language," PhD Disseartation, Computer Science Department, Carnegie-Mellon University, 1983.Google Scholar
  14. 14.
    Wulf, W.A., "PQCC: A Machine-Relative Compiler Technology," IEEE 4th International COMPSAC conference, 1980, 24–36.Google Scholar
  15. 15.
    Cattell, R.G.G., "Automatic Derivation of Code Generators from Machine Descriptions," ACM TOPLAS 2:2(1980), 173–190.CrossRefGoogle Scholar
  16. 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. 17.
    "C Cross Compiler Design Document," vol. I, II and III, Project document, Tata Research Development and Design Centre, Pune, 1985.Google Scholar
  18. 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. 19.
    Kumar, S., "Automatic Retargetable Code Generation," PhD Dissertation, Computer Science Department, Indian Institute of Technology, Kanpur, 1986.Google Scholar
  20. 20.
    Steel, T.B., Jr. "A First Version of UNCOL," Proc. Winter Joint Computer Conference, 1961, 371–378.Google Scholar
  21. 21.
    Davidson, J.W., and C.W. Fraser, "Code Selection Through Object Code Optimization," ACM TOPLAS 6:4(1984), 505–526.CrossRefGoogle Scholar
  22. 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. 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. 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. 25.
    Wulf, W.A., "BONSAI A Tree Transformer Generator," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University, 1981.Google Scholar
  26. 26.
    Stryker, D., "FLANGE: A Flow Analysis Generator User's Manual," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University.Google Scholar
  27. 27.
    Johnson, S.C., "Yacc — yet another compiler compiler," Computing Science Technical Report 32, AT & T Bell Laboratories, 1975.Google Scholar
  28. 28.
    Lesk, M.E., "Lex — a lexical analyzer generator," Computing Science Technical Report 39, AT & T Bell Laboratories, 1975.Google Scholar
  29. 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. 30.
    Medina-Mora, R. "Syntax Directed Editing: Towards Integrated Programming Environment," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1982.Google Scholar
  31. 31.
    Jorapur, S.M., "TTGEN — Tree Transformer Generator," Internal document, Tata Research Development and Design Centre, Pune, 1985.Google Scholar
  32. 32.
    Hoffman, C.M., and M.J. O'Donnell, "Pattern Matching in Trees," Journal ACM 29:1(1982), 68–95.CrossRefGoogle Scholar
  33. 33.
    O'Donnell, M.J., "Computing in Systems Described by Equations," LNCS vol. 58, Springer-Verlag, 1977.Google Scholar
  34. 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. 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. 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. 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. 38.
    Sethi, R., and J.D. Ullman, "The Generation of Optimal Code for Arithmetic Expressions," Journal ACM 17:4(1970), 715–728.CrossRefGoogle Scholar
  39. 39.
    Chaitin, G.J., "Register Allocation and Spilling via Graph Coloring," SIGPLAN symposium on Compiler Construction, 1982, 98–105.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1987

Authors and Affiliations

  • K. V. Nori
    • 1
  • Sanjeev Kumar
    • 1
  • M. Pavan Kumar
    • 1
  1. 1.Tata Research Development and Design CentrePuneIndia

Personalised recommendations