Compiler design for efficient code generation and program optimization

This paper describes the design of a compiler for an extended PASCAL with particular emphasis on code generation and optimization. The design objectives are: compiler reliability, code generator portability and object code efficiency. Designing a compiler to meet the above objectives usually requires compromises in the design. To achieve the objective of compiler reliability, one frequently tries to simplify the compiler design in order to reduce the complexity that must be mastered in the implementation. Unfortunately, the objective of producing efficient code conflicts with the objective of simplifying the compiler design. The design presented in this paper attempts to maximize the attainment of these objectives with minimal compromises.

[1]  Andres Rudmik On the generation of optimizing compilers. , 1975 .

[2]  David B. Loveman,et al.  Program Improvement by Source-to-Source Transformation , 1977, J. ACM.

[3]  Larry Carter A case study of a new code generation technique for compilers , 1977, CACM.

[4]  William A. Wulf,et al.  The Design of an Optimizing Compiler , 1975 .

[5]  Alfred V. Aho,et al.  Optimal Code Generation for Expression Trees , 1976, J. ACM.

[6]  Mark N. Wegman,et al.  A Fast and Usually Linear Algorithm for Global Flow Analysis , 1976, J. ACM.

[7]  Paul B. Schneck,et al.  A FORTRAN to FORTRAN Optimising Compiler , 1973, Comput. J..

[8]  Sidney B. Gasser Program optimization , 1972 .

[9]  Thomas G. Szymanski,et al.  Assembling code for machines with span-dependent instructions , 1978, CACM.

[10]  Donald E. Knuth,et al.  An empirical study of FORTRAN programs , 1971, Softw. Pract. Exp..

[11]  Barry K. Rosen,et al.  High-level data flow analysis , 1977, CACM.

[12]  Marvin V. Zelkowitz,et al.  Optimization of structured programs , 1974, Softw. Pract. Exp..

[13]  Frances E. Allen,et al.  Interprocedural Data Flow Analysis , 1974, IFIP Congress.

[14]  Susan L. Graham,et al.  A new method for compiler code generation , 1978, POPL '78.

[15]  Robert Scheifler,et al.  An analysis of inline substitution for a structured programming language , 1977, CACM.

[16]  Ken Kennedy,et al.  Node listings applied to data flow analysis , 1975, POPL '75.

[17]  J. Cocke Global common subexpression elimination , 1970, Symposium on Compiler Optimization.

[18]  John Banning,et al.  : An Efficient , 2022 .

[19]  Ken Kennedy,et al.  An algorithm for reduction of operator strength , 1977, Commun. ACM.

[20]  Christopher W. Fraser A compact, machine-independent peephole optimizer , 1979, POPL '79.

[21]  Jeffrey D. Ullman,et al.  A Simple Algorithm for Global Data Flow Analysis Problems , 1975, SIAM J. Comput..

[22]  Gary A. Kildall,et al.  A unified approach to global program optimization , 1973, POPL.