A Portable and Optimizing Back End for the SML/NJ Compiler

作者: Lal George , Florent Guillame , John H. Reppy

DOI: 10.1007/3-540-57877-3_6

关键词: CompilerSoftware architecture descriptionInstruction setRegister allocationPortingComputer scienceDynamic programmingAbstract machineProgramming languageMachine codeComputer architecture

摘要: There are two major goals that must be addressed in a portable back end: good sequence of instructions selected making full use the capabilities machine, and it possible to orchestrate target-specific optimizations. A key first problem is language MLRISC, intended part, represent simplest most basic operations implementable hardware. The importance MLRISC provides common representation for expressing instruction set any hardware platform. Bottom-up tree pattern matching with dynamic programming, expressed using succinct clear specifications target set, used generate machine code from an program. Target-specific optimizations performed by parameterizing off-the-shelf optimization modules concepts across architectures. specification variety architectures, ability mix match sophisticated algorithms shown. resulting end independent intermediate SML/NJ, could principle compiler source quite different SML. We argue porting new architecture requires substantially less effort than existing abstract approach, report significant gains preliminary description driven

参考文章(14)
Andrew W. Appel, David B. MacQueen, A standard ML compiler international conference on functional programming. pp. 301- 324 ,(1987) , 10.1007/3-540-18317-5_17
Andrew W. Appel, Compiling with continuations ,(1992)
Andrew W. Appel, David B. MacQueen, Standard ML of New Jersey international symposium on programming language implementation and logic programming. pp. 1- 13 ,(1991) , 10.1007/3-540-54444-5_83
Todd A. Proebsting, Christopher W. Fraser, Detecting pipeline structural hazards quickly symposium on principles of programming languages. pp. 280- 286 ,(1994) , 10.1145/174675.177904
John Peterson, Untagged data in tagged environments: choosing optimal representations at compile time Proceedings of the fourth international conference on Functional programming languages and computer architecture - FPCA '89. pp. 89- 99 ,(1989) , 10.1145/99370.99377
John Boyland, Susan L. Graham, Composing tree attributions symposium on principles of programming languages. pp. 375- 388 ,(1994) , 10.1145/174675.177971
Alfred V. Aho, Mahadevan Ganapathi, Steven W. K. Tjiang, Code generation using tree matching and dynamic programming ACM Transactions on Programming Languages and Systems. ,vol. 11, pp. 491- 516 ,(1989) , 10.1145/69558.75700
David MacQueen, Modules for standard ML Proceedings of the 1984 ACM Symposium on LISP and functional programming - LFP '84. pp. 198- 207 ,(1984) , 10.1145/800055.802036
G. J. Chaitin, Register allocation & spilling via graph coloring compiler construction. ,vol. 17, pp. 98- 105 ,(1982) , 10.1145/800230.806984
Christopher W. Fraser, David R. Hanson, Todd A. Proebsting, Engineering a simple, efficient code-generator generator ACM Letters on Programming Languages and Systems. ,vol. 1, pp. 213- 226 ,(1992) , 10.1145/151640.151642