A practical method for code generation based on exhaustive search

An original method for code generation has been developed in conjunction with the construction of a compiler for the C programming language on the DEC-10 computer. The method is comprehensive, determining evaluation order and doing register allocation and instruction selection simultaneously. It uses exhaustive search rather than heuristics, and is table-driven, with most machine-specific information isolated in the tables. Testing and evaluation have shown that the method is effective, that the search process is not too time consuming, and that the compiler is capable of producing code as good as that of other optimizing compilers.

[1]  Alfred V. Aho,et al.  Code Generation for Expressions with Common Subexpressions , 1977, J. ACM.

[2]  W. W. Bledsoe,et al.  Review of "Problem-Solving Methods in Artificial Intelligence by Nils J. Nilsson", McGraw-Hill Pub. , 1971, SGAR.

[3]  Jeffrey D. Ullman,et al.  The Generation of Optimal Code for Arithmetic Expressions , 1970, JACM.

[4]  Nils J. Nilsson,et al.  Problem-solving methods in artificial intelligence , 1971, McGraw-Hill computer science series.

[5]  R. G. G. Cattell,et al.  Code generation in a machine-independent compiler , 1979, SIGPLAN '79.

[6]  Richard Karl Johnsson An approach to global register allocation. , 1976 .

[7]  Stephen Gibbs Wasilew A compiler writing system with optimization capabilities for complex object order structures , 1972 .

[8]  R. G. G. Cattell,et al.  Automatic Derivation of Code Generators from Machine Descriptions , 1980, TOPL.

[9]  Bruce R. Schatz,et al.  An Overview of the Production-Quality Compiler-Compiler Project , 1980, Computer.

[10]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[11]  H. J. Boom,et al.  A critical comparison of several programming language implementations , 1980, Softw. Pract. Exp..

[12]  Rodney M. Bates,et al.  A PASCAL prettyprinter with a different purpose , 1981, SIGP.

[13]  Alfred V. Aho,et al.  Code-generation for machines with multiregister operations , 1977, POPL '77.

[14]  John L. Bruno,et al.  Code Generation for a One-Register Machine , 1976, J. ACM.

[15]  Stephen C. Johnson A portable compiler: theory and practice , 1978, POPL.

[16]  R. G. G. Cattell,et al.  Code generation in a machine-independent compiler , 1979, SIGPLAN '79.

[17]  Gregor von Bochmann,et al.  Videotex Networks , 1980, Computer.

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

[19]  Alfred V. Aho,et al.  Principles of Compiler Design (Addison-Wesley series in computer science and information processing) , 1977 .

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

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

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

[23]  Moshe J. Augenstein,et al.  Data Structures Using Pascal , 1981 .

[24]  Brian A. Wichmann,et al.  How to call procedures, or second thoughts on Ackermann's function , 1977, Softw. Pract. Exp..

[25]  B. A. Wichmann,et al.  Ackermann's function: A study in the efficiency of calling procedures , 1976 .

[26]  Susan L. Graham,et al.  Table-Driven Code Generation , 1980, Computer.

[27]  William A. Barrett,et al.  Compiler Construction: Theory and Practice , 1979 .