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.
Preview
Unable to display preview. Download preview PDF.
References
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.
Glanville, R.S., and S.L. Graham, "A New Method for Compiler Code Generation," 5th ACM symposium on POPL, 1978, 231–240.
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.
Giegrerich, R., "Introduction to the Compiler Generating System MUG2," Technical Report, TUM-INFO-7913, Technische Universitat Munchen, 1979.
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.
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.
Newcomer, J.M., "PQCC Intermediate Machine Description Language," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University 1981.
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.
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.
Wulf, W.A., and K.V. Nori, "Code Selection in PQCC Generated Compilers," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University, 1983.
Cattell, R.G.G., "Formalization and Automatic Derivation of Code Generators," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1978.
Leverett, B.W., "Register Allocation in Optimizing Compilers," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1981.
Lamb, D.A., "IDL — Interface Description Language," PhD Disseartation, Computer Science Department, Carnegie-Mellon University, 1983.
Wulf, W.A., "PQCC: A Machine-Relative Compiler Technology," IEEE 4th International COMPSAC conference, 1980, 24–36.
Cattell, R.G.G., "Automatic Derivation of Code Generators from Machine Descriptions," ACM TOPLAS 2:2(1980), 173–190.
Goos, G., W.A. Wulf, A. Evans Jr., and K.J. Butler, "DIANA An Intermediate Language for Ada," LNCS vol. 161, Springer-Verlag, 1983.
"C Cross Compiler Design Document," vol. I, II and III, Project document, Tata Research Development and Design Centre, Pune, 1985.
Kumar, S., and V.M. Malhotra, "Automatic Retargetable Code Generation: A New Technique," FST & TCS6 conference, LNCS vol. 241, Springer Verlag, 1986, 57–80.
Kumar, S., "Automatic Retargetable Code Generation," PhD Dissertation, Computer Science Department, Indian Institute of Technology, Kanpur, 1986.
Steel, T.B., Jr. "A First Version of UNCOL," Proc. Winter Joint Computer Conference, 1961, 371–378.
Davidson, J.W., and C.W. Fraser, "Code Selection Through Object Code Optimization," ACM TOPLAS 6:4(1984), 505–526.
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.
Tanenbaum, A.S., H. van Staveren, and J.W. Stevenson, "Using Peephole Optimization on Intermediate Code," ACM TOPLAS 4:1(1982), 21:36.
Nestor, J.R., and M. Beard, "Front End Generator User's Guide," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University, 1981.
Wulf, W.A., "BONSAI A Tree Transformer Generator," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University, 1981.
Stryker, D., "FLANGE: A Flow Analysis Generator User's Manual," Internal document PQCC project, Computer Science Department, Carnegie-Mellon University.
Johnson, S.C., "Yacc — yet another compiler compiler," Computing Science Technical Report 32, AT & T Bell Laboratories, 1975.
Lesk, M.E., "Lex — a lexical analyzer generator," Computing Science Technical Report 39, AT & T Bell Laboratories, 1975.
Deodhar, R., and S.M. Jorapur, "Treegen — Abstract Syntax Tree Builder," Internal document, Tata Research Development and Design Centre, Pune, 1984.
Medina-Mora, R. "Syntax Directed Editing: Towards Integrated Programming Environment," PhD Dissertation, Computer Science Department, Carnegie-Mellon University, 1982.
Jorapur, S.M., "TTGEN — Tree Transformer Generator," Internal document, Tata Research Development and Design Centre, Pune, 1985.
Hoffman, C.M., and M.J. O'Donnell, "Pattern Matching in Trees," Journal ACM 29:1(1982), 68–95.
O'Donnell, M.J., "Computing in Systems Described by Equations," LNCS vol. 58, Springer-Verlag, 1977.
Jajoo, B.H., "A Programming System Based on Program Structure," PhD Dissertation, Computer Science Department, Indian Institute of Technology, Kanpur, 1980.
Joshi, S.M., and K.V. Nori, "Equational Formulation of Data Flow Analysis," Internal document, Tata Research Development and Design Centre, Pune, 1987.
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.
Aho, A.V., and M.J. Corasick, "Efficient String Matching: an aid to Bibliographic Search," CACM 18:6(1975), 333–340.
Sethi, R., and J.D. Ullman, "The Generation of Optimal Code for Arithmetic Expressions," Journal ACM 17:4(1970), 715–728.
Chaitin, G.J., "Register Allocation and Spilling via Graph Coloring," SIGPLAN symposium on Compiler Construction, 1982, 98–105.
Author information
Authors and Affiliations
Editor information
Rights 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