An optimizing compiler for lexically scoped LISP

We are developing an optimizing compiler for a dialect of the LISP language. The current target architecture is the S-I, a multiprocessing supercomputer designed at Lawrence Livermore National Laboratory. While LISP is usually thought of as a language primarily for symbolic processing and list manipulation, this compiler is also intended to compete with the S-1 PASCAL and FORTRAN compilers for quality of compiled numerical code. The S-1 is designed for extremely high-speed signal processing as well as for symbolic computation; it provides primitive operations on vectors of floating-point and complex numbers. The LISP compiler is designed to exploit the architecture heavily. The compiler is structurally and conceptually similar to the BLISS-11 compiler and the compilers produced by PQCC. In particular, the TNBIND technique has been borrowed and extended.

[1]  Guy L. Steele,et al.  LAMBDA: The Ultimate Declarative , 1976 .

[2]  Daniel G. Bobrow,et al.  A model and stack implementation of multiple environments , 1973, CACM.

[3]  J. L. White LISP: Program is data. A historical perspective on MACLISP , 1977 .

[4]  Jerome H. Saltzer,et al.  A hardware architecture for implementing protection rings , 1972, CACM.

[5]  Jerome T. Coonen,et al.  Special Feature an Implementation Guide to a Proposed Standard for Floating-Point Arithmetic , 1980, Computer.

[6]  Friedrich L. Bauer,et al.  Revised report on the algorithm language ALGOL 60 , 1963, CACM.

[7]  Jr. Guy L. Steele,et al.  Rabbit: A Compiler for Scheme , 1978 .

[8]  Gerald Jay Sussman,et al.  The Revised Report on SCHEME: A Dialect of LISP. , 1978 .

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

[10]  Jacques J. Arsac,et al.  Syntactic source to source transforms and program manipulation , 1979, CACM.

[11]  Aaron J. Goldberg,et al.  Smalltalk-72 instruction manual , 1976 .

[12]  Warren Teitelman,et al.  The interlisp reference manual , 1974 .

[13]  Guy L. Steele,et al.  Fast arithmetic in MacLISP , 1977 .

[14]  Jerome T. Coonen Underflow and the Denormalized Numbers , 1981, Computer.

[15]  Elliott I. Organick,et al.  The multics system: an examination of its structure , 1972 .

[16]  Jerome T. Coonen Errata for 'an implementation guide to a proposed standard for floating-point arithmetic , 1981 .

[17]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1959, Commun. ACM.

[18]  Henry G. Baker,et al.  Shallow binding in Lisp 1.5 , 1978, CACM.

[19]  David A. Moon,et al.  The Lisp Machine manual , 1981, SGAR.

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

[21]  T. J. Bergendahl,et al.  DIGITAL EQUIPMENT CORPORATION. , 1968, Analytical chemistry.

[22]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[23]  Guy L. Steele,et al.  A compiler for scheme (a study in compiler optimization) , 1978 .

[24]  William H. Harrison A New Strategy for Code Generation - the General-Purpose Optimizing Compiler , 1979, IEEE Trans. Software Eng..

[25]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[26]  G. Ford,et al.  Optional, repeatable, and varying type parameters , 1982, SIGP.

[27]  Gerald Jay Sussman,et al.  An Interpreter for Extended Lambda Calculus , 1975 .

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

[29]  Jerome T. Coonen,et al.  Ieee standard for binary floating-point arithmetic , 1985 .

[30]  Joel Moses The function of FUNCTION in LISP or why the FUNARG problem should be called the environment problem , 1970, SIGS.

[31]  Charles Matthew Geschke,et al.  Global program optimizations. , 1973 .

[32]  Gerald Jay Sussman,et al.  Lambda: The Ultimate Imperative , 1976 .

[33]  Jean E. Sammet,et al.  Programming languages: history and future , 1972, CACM.

[34]  J. D. Ichbiah,et al.  Preliminary Ada reference manual , 1979, SIGP.

[35]  Dennis F. Kibler,et al.  Improving and refining programs by program manipulation , 1976, ACM '76.

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

[37]  A. Falkoff,et al.  Development of an APL standard , 1979, APL '79.

[38]  Brian A. Wichmann,et al.  Reference Manual for the Ada Programming Language. Proposed Standard Document , 1980 .

[39]  C. Hewitt,et al.  Comments on C. Hewitt, viewing control structures as patterns of passing messages, Artificial Intelligence 8 (1977) 323¿364 , 1978 .

[40]  Guy L. Steele Debunking the “expensive procedure call” myth or, procedure call implementations considered harmful or, LAMBDA: The Ultimate GOTO , 1977, ACM '77.