Bibliography

up

Thursday, September 27, 2001

Below are some interesting papers related to compilers and programming languages that Waldemar has seen.

Languages
Language Design
[Steele98] Growing a Language Guy Steele OOPSLA 1998 keynote
Abstraction Mechanisms
[GHJV95] Design Patterns: Elements of Reusable Object-Oriented Software Gamma, Helm, Johnson, Vlissides Addison-Wesley 1995
[Cardelli96] Bad Engineering Properties of Object-Oriented Languages Luca Cardelli ACM Computing Surveys 28, Article 150, 1996
[MiSe98] A Study of The Fragile Base Class Problem Leonid Mikhajlov, Emil Sekerinski ECOOP 1998, p. 355-382
[CliRee90] Macros that Work William Clinger, Jonathan Rees POPL 1990, p. 155-162
[SPL98] Evolution of Object Behavior using Context Relations Linda Seiter, Jens Palsberg, Karl Lieberherr IEEE Transactions on Software Engineering, 24:1, 1998, p. 79-92
Module Systems
[CuRau90] A Module System for Scheme Pavel Curtis, James Rauen 1990 ACM Conference on Lisp and Functional Programming, p. 13-19
Theory
Type Systems
[AbCa96] A Theory of Objects Martin Abadi, Luca Cardelli Springer 1996
[Cardelli97] Type Systems Luca Cardelli The Computer Science and Engineering Handbook. CRC Press, 1997, Chapter 103, p. 2208-2236
[EKC98] Predicate Dispatching: A Unified Theory of Dispatch Michael Ernst, Craig Kaplan, Craig Chambers ECOOP 1998, p. 186-211
[SSJ98] Dynamic Typing as Staged Type Inference Mark Shields, Tim Sheard, Simon Peyton Jones POPL 1998, p. 289-302
[RieSto98] Privacy via Subsumption Jon Riecke, Christopher Stone Fifth International Workshop on Foundations of Object-Oriented Languages (FOOL 5), 1998
[FiMi98] On the Relationship between Classes, Objects and Data Abstraction Kathleen Fisher, John Mitchell Theory and Practice of Object Systems 4:1, 1998, p. 3-32
[FiMi96] The Development of Type Systems for Object-Oriented Languages Kathleen Fisher, John Mitchell Theory and Practice of Object Systems 1:3, 1996, p. 189-220
[WriCa97] A Practical Soft Type System for Scheme Andrew Wright, Robert Cartwright TOPLAS 19:1, January 1997, p. 87-152
[FFA99] A Theory of Type Qualifiers Jeffrey Foster, Manuel Fähndrich, Alexander Aiken PLDI 1999, p. 192-203
Semantics
[Mitchell96] Foundations for Programming Languages John Mitchell MIT Press 1996
[Schmidt86] Denotational Semantics: A Methodology for Language Development David Schmidt Allyn and Bacon 1986
[SloKu95] Formal Syntax and Semantics of Programming Languages Kenneth Slonneger, Barry Kurtz Addison-Wesley 1995
[Wallace97] The Semantics of the Java Programming Language: Preliminary Version Charles Wallace University of Michigan CSE-TR-355-97, 1997
Effects
[GJS90] Report on the FX-90 Programming Language David Gifford, Pierre Jouvelot, Mark Sheldon MIT memo 1990
[GJSOT91] Report on the FX-91 Programming Language David Gifford, Pierre Jouvelot, Mark Sheldon, James O'Toole 1991 MIT LCS TR-531
[Lucassen87] Types and Effects: Towards the Integration of Functional and Imperative Programming John Lucassen 1987 MIT LCS TR-408
Object Architectures
CORBA
[Siegel96] CORBA Fundamentals and Programming Jon Siegel Wiley 1996
COM
[Box98] Essential COM Don Box Addison-Wesley 1998
[Redmond97] DCOM: Microsoft Distributed Component Object Model Frank Redmond IDG Books 1997
[Kirtland97a] Object-Oriented Software Development Made Simple with COM+ Runtime Services Mary Kirtland MSJ 12:11, Nov 1997, p. 49-59
[Kirtland97b] The COM+ Programming Model Makes it Easy to Write Components in any Language Mary Kirtland MSJ 12:12, Dec 1997, p. 19-28
Threading
[Pugh00] The Java Memory Model is Fatally Flawed William Pugh Concurrency: Practice and Experience 12:6, May 2000, p. 445-455
[MaPu01] Semantics of Multithreaded Java Jeremy Manson, William Pugh 2001 (internet article)
[Pugh] The Java Memory Model William Pugh http://www.cs.umd.edu/~pugh/java/memoryModel/
JavaScript
[Flanagan98] JavaScript: The Definitive Guide, 3rd Ed. David Flanagan O'Reilly 1998
[ECMA262] ECMAScript Language Specification ISO/IEC Standard 16262 ISO/ECMA 1998
[ArGo96] The Java Programming Language Ken Arnold, James Gosling Addison-Wesley 1996
[GJS96] The Java Language Specification James Gosling, Bill Joy, Guy Steele Addison-Wesley 1996
[LiYe97] The Java Virtual Machine Specification Tim Lindholm, Frank Yellin Addison-Wesley 1997
[GoYe96a] The Java Application Programming Interface, Vol 1: Core Packages James Gosling, Frank Yellin Addison-Wesley 1996
[GoYe96b] The Java Application Programming Interface, Vol 2: Window Toolkit and Applets James Gosling, Frank Yellin Addison-Wesley 1996
Java Variants
[MBL97] Parametrized Types for Java Andrew Myers, Joseph Bank, Barbara Liskov POPL 1997, p. 132-145
[OdeWa97] Pizza into Java: Translating Theory into Practice Martin Odersky, Philip Wadler POPL 1997, p. 146-159
[Golliver97a] First-Implementation Artifacts in Java Roger Golliver Intel 1997
[Golliver97b] The Ivory Brand of Java Roger Golliver Intel 1997
C++
[ISOC++] Programming languages -- C++ ISO/IEC International Standard ISO/IEC 14882: 1998
[Stroustrup97] The C++ Programming Language, 3rd Ed. Bjarne Stroustrup Addison-Wesley 1997
[Meyers92] Effective C++ Scott Meyers Addison-Wesley 1992
[Meyers96] More Effective C++ Scott Meyers Addison-Wesley 1996
[KoeMoo97] Ruminations on C++ Andrew Koenig, Barbara Moo Addison-Wesley 1997
[Sutter00] Exceptional C++ Herb Sutter Addison-Wesley 2000
Miscellaneous Languages
Research Language Overviews Mark Leone http://www.cs.cmu.edu/~mleone/language/overviews.html
[ChaLea96] BeCecil, A Core Object-Oriented Language with Block Structure and Multimethods: Semantics and Typing Craig Chambers, Gary Leavens Fourth International Workshop on Foundations of Object-Oriented Languages (FOOL 4), 1997
[Chambers97] The Cecil Language: Specification and Rationale Craig Chambers University of Washington 1997
[Steele90] Common Lisp: The Language, 2nd Ed. Guy Steele Digital Press 1990
[KRB91] The Art of the Metaobject Protocol Gregor Kiczales, Jim des Rivières, Daniel Bobrow MIT Press 1991
[Shalit96] The Dylan Reference Manual Andrew Shalit Addison Wesley 1996
[Apple92] Dylan: An Object-Oriented Dynamic Language Apple computer 1992
[Haskell99] Report on the Programming Language Haskell 98 Simon Peyton Jones, John Hughes, Lennart Augustsson, Dave Barton, Brian Boutel, Warren Burton, Joseph Fasel, Kevin Hammond, Ralf Hinze, Paul Hudak, Thomas Johnsson, Mark Jones, John Launchbury, Erik Meijer, John Peterson, Alastair Reid, Colin Runciman, Philip Wadler http://www.haskell.org/definition, February 1999
[Thompson99] Haskell: The Craft of Functional Programming, 2nd Edition Simon Thompson Addison-Wesley 1999
[CDGJKN89] Modula-3: Language definition Luca Cardelli, James Donahue, Lucille Glassman, Mick Jordan, Bill Kalsow, Greg Nelson Digital 1989
[Cow97] The NetRexx Language Michael Cowlishaw 1997
[Marais94] Oberon System 3 Johannes Marais Dr. Dobb's Journal, 19:11, October 1994, p. 42-50+104
[Marais96] Extensible Software Systems in Oberon Johannes Marais Journal of Computational and Graphical Statistics, 5:3, September 1996, p. 284-298
[Cardelli94] Obliq: A Language with Distributed Scope Luca Cardelli DEC SRC Research Report 122, 1994
[Cardelli95] A Language with Distributed Scope Luca Cardelli Computing Systems, 8:1, January 1995, p. 27-59
[Blaschek94] Object-Oriented Programming with Prototypes Günther Blaschek Springer-Verlag 1994
[WCS96] Programming Perl, 2nd Ed. Larry Wall, Tom Christiansen, Randal Schwartz O'Reilly 1996
[Friedl97] Mastering Regular Expressions Jeffrey Friedl O'Reilly 1997
[Omohundro93] The Sather Programming Language Stephen Omohundro Dr. Dobb's Journal, 18:11, October 1993, p. 42-48
[GSVKF96] A Language Manual for Sather 1.1 and pSather 1.1 Benedict Gomes, David Stoutamire, Boris Vaysman, Holger Klawitter, Jerome Feldman 1996
[KCR98] Revised5 Report on the Algorithmic Language Scheme Richard Kelsey, William Clinger, Jonathan Rees ACM SIGPLAN Notices, 33:9, September 1998, p. 26-76
[Raggett98] Adding Style and Behaviour to XML Pages with a dash of Spice Dave Raggett http://www.w3.org/People/Raggett/Spice/ECMA/Spice-paper.html, 1998
[DoLea98] A gentle (but very rapid) introduction to Spice, v1.3 Chris Dollin, Steve Leach http://www.w3.org/People/Raggett/Spice/ECMA/chatty.html, Sep 23, 1998
[LCDGGJM95] Theta Reference Manual, Preliminary Version Barbara Liskov, Dorothy Curtis, Mark Day, Sanjay Ghemawat, Robert Gruber, Paul Johnson, Andrew Myers 1995 MIT Programming Methodology Group Memo 88
[DeLiFä01] Enforcing High-Level Protocols in Low-Level Software Robert DeLine, Manuel Fähndrich PLDI 2001, p. 59-69
[Lomax98] VB & VBA in a Nutshell Paul Lomax O'Reilly 1998
[KiMa98] WebL -- A Programming Language for the Web Thomas Kistler, Hannes Marais WWW7 conference, 1998
[Marais99] WebL -- A Programming Language for the Web Hannes Marais User manual version 3.0, 1999
Assembly Languages
[Intel99] IA64 Application Developer's Architecture Guide Intel 1999
[Intel96a] Pentium Pro Family Developer's Manual, Vol 2: Programmer's Reference Manual Intel 1996
[Intel96b] Pentium Pro Family Developer's Manual, Vol 3: Operating System Writer's Manual Intel 1996
[Intel95] Optimizations for Intel's 32-Bit Processors Intel 1995 AP-526
[Motorola87] MC68030 Enhanced 32-Bit Microprocessor User's Manual Motorola 1987 MC68030UM/AD
[Motorola89] MC68040 32-Bit Microprocessor User's Manual Motorola 1989 MC68040UM/AD
[IBMMot93] PowerPC 601 RISC Microprocessor User's Manual IBM, Motorola 1993 MPC601UM/AD Rev. 1
[HKHW96] The PowerPC Compiler Writer's Guide Steve Hoxey, Faraydon Karim, Bill Hay, Hank Warren 1996 MPRPPCOMP-01
[Heinrich93] MIPS R4000 User's Manual Joe Heinrich 1993
[SPARC92] The SPARC Architecture Manual, Version 8 SPARC International 1992 SAV080SI9106
[Digital92] Alpha Architecture Handbook Digital 1992
[Kane96] PA-RISC 2.0 Architecture Gerry Kane 1996
Debugging
[Wismüller94] Debugging of Globally Optimized Programs Using Data Flow Analysis Wismüller PLDI 1994, p. 278
[BHS92] A New Approach to Debugging Optimized Code Brooks, Hansen, Simmons PLDI 1992, p. 1
[HCU92] Debugging Optimized Code with Dynamic Deoptimization Hölzle, Craig Chambers, Ungar PLDI 1992, p. 32
[RaHa92] A Retargetable Debugger Ramsey, Hanson PLDI 1992, p. 22
Compilers
Compiler Books
[ACHM82] Engineering a Compiler: VAX-11 Code Generation and Optimization Anklam, Cutler, Heinen, MacLaren 1982
[ASU86] Compilers: Principles, Techniques, and Tools Aho, Sethi, Ullman 1986
[Ellis86] Bulldog: A Compiler for VLIW Architectures Ellis 1986
[Lee89] Realistic Compiler Generation Lee 1989
[Holub90] Compiler Design in C Holub 1990
[FiLeBl91] Crafting a Compiler with C Fischer, LeBlanc Benjamin/Cummings 1991
[FraHa95] A Retargetable C Compiler: Design and Implementation Fraser, Hanson Benjamin/Cummings 1995
[Appel98] Modern Compiler Implementation in C Appel Cambridge 1998
Integrated Compilers
[EAH96] A Java ILP Machine Based on Fast Dynamic Compilation Ebcioglu, Altman, Hokenek (IBM) IBM Cyberjournal 8310
[EbAlt96] DAISY: Dynamic Compilation for 100% Architectural Compatibility Ebcioglu, Altman (IBM) IBM Cyberjournal 8502
[HooZa96] Generating Machine Specific Optimizing Compilers Hoover, Zadeck (IBM) POPL 1996, p. 219
[AGL96] cmcc: Competitive modular compiler in C++ Adl-Tabatabai, Gross, Lueh (CMU) OOPSLA 1996, p. 51
[DDGLC96] Vortex: An Optimizing Compiler for Object-Oriented Languages Dean, DeFouw, Grove, Litvinov, Craig Chambers OOPSLA 1996, p. 83
[Brandis95] Optimizing Compilers for Structured Programming Languages Brandis (Zürich) PhD thesis 1995
[JoMcC] The RTL System: A Framework for Code Optimization Johnson, McConnell (U Illinois)
[McCRoSch] The RTL System McConnell, Roberts, Schoening (U Illinois)
[FraHa91a] A Retargetable Compiler for ANSI C Fraser, Hanson SIGPLAN Notices 26:10, Oct 1991, p. 29
[Horwat88] A Concurrent Smalltalk Compiler for the Message-Driven Processor Horwat (MIT) 1988 MIT AI-TR 1080
[Horwat89] Concurrent Smalltalk on the Message-Driven Processor Horwat (MIT) 1989 MIT AI-TR 1321
Parsers
See also Compiler Books
[Pager77] A Practical General Method for Constructing LR(k) Parsers David Pager Acta Informatica 7, 1977, p. 249-268
[WeSha81] LR -- Automatic Parser Generator and LR(1) Parser Charles Wetherell, Alfred Shannon IEEE Transactions on Software Engineering SE-7:3, May 1981, p. 274-278
[Ives86] Unifying View of Recent LALR(1) Lookahead Set Algorithms Fred Ives SIGPLAN 1986 Symposium on Compiler Construction, p. 131-135
[BeSchi86] A Practical Arbitrary Look-ahead LR Parsing Technique Manuel Bermudez, Karl Schimpf SIGPLAN 1986 Symposium on Compiler Construction, p. 136-144
[Spector88] Efficient Full LR(1) Parser Generation David Spector SIGPLAN Notices 23:12, Dec 1998, p. 143-150
[Burshteyn94] Algorithms in Muskok parser generator Boris Burshteyn comp.compilers, March 16, 1994
Dataflow Analysis and Intermediate Representations
Traditional
[TjiaHe92] Sharlit -- A tool for building optimizers Tjiang, Hennessy (Stanford) PLDI 1992, p. 82
[BGS95a] GURRR: A Global Unified Resource Requirements Representation Berson, Gupta, Soffa IR 1995, p. 23
[Tjiang93] Automatic Generation of Data-Flow Analyzers: A Tool for Building Optimizers Tjiang PhD thesis 1993
[DRZ92] How to Analyze Large Programs Efficiently and Informatively Dhamdhere, Rosen, Zadeck PLDI 1992, p. 212
[MaRy90] An Efficient Hybrid Algorithm for Incremental Data Flow Analysis Marlowe, Ryder (Rutgers) POPL 1990, p. 184
[JaiTho88] An Efficient Approach to Data Flow Analysis in a Multiple Pass Global Optimizer Jain, Thompson (HP) PLDI 1988, p. 154
Program Dependence Graphs
[BaMa92] Program Dependence Graphs for the Rest of Us Ballance, Maccabe (U New Mexico) TR 1992-10
[WCES94] Value Dependence Graphs: Representation Without Taxation Daniel Weise, Roger Crew, Michael Ernst, Bjarne Steensgaard POPL 1994, p. 297-310
[Ruf95] Optimizing Sparse Representations for Dataflow Analysis Ruf (Microsoft) IR 1995, p. 50
Static Single Assignment: Basics
[LeTa79] A Fast Algorithm for Finding Dominators in a Flowgraph Lengauer, Tarjan (Stanford) TOPLAS 1:1, Jul 1979, p. 121
[CFRWZ89] An Efficient Method of Computing Static Single Assignment Form Cytron, Ferrante, Rosen, Wegman, Zadeck (IBM) POPL 1989, p. 25
[CFRWZ91] Efficiently Computing Static Single Assignment Form and the Control Dependence Graph Cytron, Ferrante, Rosen, Wegman, Zadeck (IBM) TOPLAS 13:4, Oct 1991, p. 451
[CyFe93] Efficiently Computing phi-Nodes On-The-Fly Cytron, Ferrante Languages and Compilers for Parallel Computing 1993, p. 461
Static Single Assignment: DJ Graphs
[SGL95a] Incremental Computation of Dominator Trees Sreedhar, Gao, Lee (McGill) IR 1995, p. 1
[SGL96] A New Framework for Exhaustive and Incremental Data Flow Analysis Using DJ Graphs Sreedhar, Gao, Lee (McGill) PLDI 1996, p. 278
[SGL95b] Efficient Data Flow Analysis Using DJ Graphs: Elimination Methods Revisited Sreedhar, Gao, Lee (McGill) TR 1995-93
[SreeGao95] A Linear Time Algorithm for Placing phi-Nodes Sreedhar, Gao (McGill) POPL 1995, p. 62
[Sreedhar95] Efficient Program Analysis Using DJ Graphs Sreedhar (McGill) PhD thesis 1995
Static Single Assignment: Other Variants
[Ramalingam97] On Sparse Evaluation Representations Ramalingam (IBM) Fourth International Static Analysis Symposium 1997
[PBJMS91] Dependence Flow Graphs: An Algebraic Approach to Program Dependencies Pingali, Beck, Johnson, Moudgill, Stodghill (Cornell) POPL 1991, p. 67
[JPP94] The Program Structure Tree: Computing Control Regions in Linear Time Johnson, Pearson, Pingali (Cornell) PLDI 1994, p. 171
[JoPi93] Dependence-Based Program Analysis Johnson, Pingali (Cornell) PLDI 1993, p. 78
[CCF91] Automatic Construction of Sparse Data Flow Evaluation Graphs Choi, Cytron, Ferrante (IBM) POPL 1991, p. 55
[CliPa95] A Simple Graph-Based Intermediate Representation Click, Paleczny IR 1995, p. 35
[TuPa95] Efficient Building and Placing of Gating Functions Tu, Padua (U Illinois) PLDI 1995, p. 47
[Havlak93] Construction of Thinned Gated Single-Assignment Form Havlak Langs and Compilers for Parallel Computing 1993, p. 477
[GeWoSto] A Reference Chain Approach for Live Variables Gerlek, Wolfe, Stoltz (OGI)
[SGW94] Extended SSA with Factored Use-Def Chains to Support Optimization and Parallelism Stoltz, Gerlek, Wolfe (OGI) HICSS 1994, p. 43
[BraMö94] Single-Pass Generation of Static Single-Assignment Form for Structured Languages Brandis, Mössenböck (Zürich) TOPLAS 16:6, Nov 1994, p. 1684
Optimization
Constant Propagation
[WeZa91] Constant Propagation with Conditional Branches Wegman, Zadeck (IBM) TOPLAS 13:2, Apr 1991, p. 181
[SWG94] Constant Propagation: A Fresh Demand-Driven Look Stoltz, Wolfe, Gerlek (OGI) SIGAPP 1994
Partial Redundancy Elimination
[AWZ88] Detecting Equality of Variables in Programs Alpern, Wegman, Zadeck POPL 1988, p. 1
[RWZ88] Global Value Numbers and Redundant Computation Rosen, Wegman, Zadeck POPL 1988, p. 12
[KRS92] Lazy Code Motion Knoop, Rüthing, Steffen PLDI 1992, p. 224
[KRS95] The Power of Assignment Motion Knoop, Rüthing, Steffen PLDI 1995, p. 233
[Click95a] Global Code Motion; Global Value Numbering Click PLDI 1995, p. 246
[CliCoo95] Combining Analyses, Combining Optimizations Click, Cooper (Rice) TOPLAS 17:2, Mar 1995, p. 181
[Click95b] Combining Analyses, Combining Optimizations Click (Rice) PhD thesis 1995
[Simpson96] Value-Driven Redundancy Elimination Simpson (Rice) PhD Thesis 1996
[CCKLLT97] A New Algorithm for Partial Redundancy Elimination Based on SSA Form Chow, Chan, Kennedy, Liu, Lo, Tu (SGI) PLDI 1997, p. 273
Range Checking
[GouKlae96] Eliminating Range Checks using Static Single Assignment Form Gough, Klaeren ACSC 1996
[GouKlae94] Eliminating Range Checks using Static Single Assignment Form Gough, Klaeren Tübingen TR 1994
[KoWo95] Elimination of Redundant Array Subscript Range Checks Kolte, Wolfe PLDI 1995, p. 270
[Gupta90] A Fresh Look at Optimizing Array Bound Checking Gupta PLDI 1990, p. 272
General
[McCJo92] Using Static Single Assignment Form in a Code Optimizer McConnell, Johnson (U Illinois) LOPLAS 1:2, Jun 1992, p. 152
[CSV95] Operator Strength Reduction Cooper, Simpson, Vick (Rice) TR95635-S 1995
[McConnell93] Tree-Based Code Optimization McConnell (U Illinois) PhD thesis 1993
[HHGMLH95] Compiler Technology for Future Microprocessors Hwu, Hank, Gallagher, Mahlke, Lavery, Haab, Gyllenhaal, August Proc. IEEE 83:12, Dec. 1995, p. 1625
Synchronization
[Bacon97] Featherweight Monitors with Bacon Bits Bacon (IBM)
Dynamic Dispatching
[DrieHö95] Minimizing Row Displacement Dispatch Tables Driesen, Hölzle (UCSB) OOPSLA 1995, p. 141
[DMSV89] A Fast Method Dispatcher for Compiled Languages with Multiple Inheritance Dixon, McKee, Schweizer, Vaughan OOPSLA 1989, p. 211
[ViHo96] Compact Dispatch Tables for Dynamically Typed Object Oriented Languages Vitek, Horspool CC 1996, p. 309
[DMM96] Simple and Effective Analysis of Statically-Typed Object-Oriented Programs Diwan, Moss, McKinley (UMass) OOPSLA 1996, p. 292
[HöUn95] Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback Hölzle, Ungar PLDI 1994, p. 326
Interprocedural
[Hölzle94] Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming Hölzle PhD thesis 1994
[Dolby97] Automatic Inline Allocation of Objects Dolby (U Illinois) PLDI 1997, p. 7
[Goodwin97] Interprocedural Dataflow Analysis in an Executable Optimizer Goodwin (DEC) PLDI 1997, p. 122
[AGS97] Aggressive Inlining Ayers, Gottlieb, Schooler PLDI 1997, p. 134
Code Generation
[HaChri86] High-Quality Code Generation Via Bottom-Up Tree Pattern Matching Hatcher, Christopher (IIT) POPL 1986, p. 119
[Chase87] An Improvement to Bottom-Up Tree Pattern Matching Chase (Rice) POPL 1987, p. 168
[PeGra88] Optimal Code Generation for Expression Trees: An Application of BURS Theory Pelegri-Llopart, Graham (Berkeley) POPL 1988, p. 294
[BDB90] Efficient Retargetable Code Generation using Bottom-Up Tree Pattern Matching Balachandran, Dhamdhere, Biswas Computer Language 15:3, 1990, p. 127
[FraHa91b] A Code Generation Interface for ANSI C Fraser, Hanson Sw Practice and Exp 21:9, Sep 1991, p. 963
[FraHe91] Hard-coding Bottom-up Code Generation Tables to Save Time and Space Fraser and Henry Sw Practice and Exp 21:1, Jan 1991, p. 1
[Proebsting92a] Code Generation Techniques Proebsting (U Wisconsin - Madison) PhD thesis 1992
[Proebsting92b] Simple and Efficient BURS Table Generation Proebsting (U Wisconsin - Madison) PLDI 1992, p. 331
[FraHeProe] BURG -- Fast Optimal Instruction Selection and Tree Parsing Fraser, Henry, Proebsting manual
[FHP92] Engineering a Simple, Efficient Code Generator Generator Fraser, Hanson, Proebsting LOPLAS 1:3, Sep 1992, p. 213
[ProeWha96] One-Pass, Optimal Tree Parsing -- With or Without Trees Proebsting, Whaley (U Arizona) CC 1996, p. 294
[Gough] Bottom up Tree Rewriting with MBURG: The MBURG Reference Manual Gough manual
[NKWA96] Code Generation = A* + BURS Nymeyer, Katoen, Westra, Alblas CC 1996, p. 160
Register Allocation
Local
[HFG89] On the Minimization of Loads/Stores in Local Register Allocation Hsu, Fischer, Goodman IEEE Trans Sw Eng 15:10, Oct 1989, p. 1252
See also instruction scheduling
Intraprocedural
[Lueh96] Issues in Register Allocation by Graph Coloring Lueh (CMU) TR 1996-171
[LGA96] Global Register Allocation Based on Graph Fusion Lueh, Gross, Adl-Tabatabai (CMU) TR 1996-106
[BWD95] Register Allocation Using Lazy Saves, Eager Restores, and Greedy Shuffling Burger, Waddell, Dybvig (Indiana) PLDI 1995, p. 130
[Pinter93] Register Allocation with Instruction Scheduling: a New Approach Pinter (Technion) PLDI 1993, p. 248
[HGAM92] A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs Hendren, Gao, Altman, Mukerji (McGill) CC 1992, p. 176
[BGS95b] HARE: A Hierarchical Allocator for Registers in Multiple Issue Architectures Berson, Gupta, Soffa (U Pittsburgh) TR 1995-06
[CaKo91] Register Allocation via Hierarchical Graph Coloring Callahan, Koblenz (Tera) PLDI 1991, p. 192
[GeoApp96] Iterated Register Coalescing George, Appel POPL 1996, p. 208
[BCT94] Improvements to Graph Coloring Register Allocation Briggs, Cooper, Torczon (Rice) TOPLAS 16:3, May 1994, p. 428
[Briggs92] Register Allocation via Graph Coloring Briggs (Rice) PhD thesis 1992
[ChoHe90] The Priority-Based Coloring Approach to Register Allocation Chow, Hennessy TOPLAS 12, Oct 1990, p. 501
[ProeFi96] Demand-Driven Register Allocation Proebsting, Fischer TOPLAS 18:6, Nov 1996, p. 683
[NoPo94] Register Allocation Over the Program Dependence Graph Norris, Pollock (U Delaware) PLDI 1994, p. 266
[Nickerson90] Graph Coloring Register Allocation for Processors with Multi-Register Operands Nickerson (Intel) PLDI 1990, p. 40
[FraHa92] Simple Register Spilling in a Retargetable Compiler Fraser, Hanson Sw Practice and Exp 22:1, Jan 1992, p. 85
[GouLe95] Register Allocation in the Gardens Point Compilers Gough, Ledermann (Queensland) ACSC 1995
[BDEO97] Spill Code Minimization via Interference Region Spilling Bergner, Dahl, Engebretsen, O'Keefe (U Minnesota) PLDI 1997, p. 287
[LueGro97] Call-Cost Directed Register Allocation Lueh, Gross (CMU) PLDI 1997, p. 296
Interprocedural
[Chow88] Minimizing Register Usage Penalty at Procedure Calls Chow PLDI 1988, p. 85
[KuFi96] Minimum Cost Interprocedural Register Allocation Kurlander, Fischer (U Wisconsin - Madison) POPL 1996, p. 230
[Wall88] Register Windows vs. Register Allocation Wall (Digital) PLDI 1988, p. 67
Scheduling
Execution Unit Scheduling
[RauFi93] Instruction-Level Parallel Processing: History, Overview, and Perspective Rau, Fisher (HP) J. Supercomputing 7, May 1993, p. 9
[CLMCH95] The Importance of Prepass Code Scheduling for Superscalar and Superpipelined Processors Chang, Lavery, Mahlke, Chen, Hwu (U Illinois) IEEE Trans on Computers 44:3, Mar 1995
[Griesemer92] Scheduling Instructions by Direct Placement Griesemer (Zürich) CC 1992, p. 229
[Lam88] Software Pipelining: An Effective Scheduling Technique for VLIW Machines Lam (CMU) PLDI 1988, p. 318
[KPF95] Efficient Instruction Scheduling for Delayed-Load Architectures Kurlander, Proebsting, Fischer (UWisconsin - Madison) TOPLAS 17:5, 1995, p. 740
[ProeFi91] Linear-time, Optimal Code Scheduling for Delayed-Load Architectures Proebsting, Fischer (UWisconsin - Madison) PLDI 1991, p. 256
[GooHsu88] Code Scheduling and Register Allocation in Large Basic Blocks Goodman, Hsu Supercomputing 1988, p. 442
[BEH91] Integrating Register Allocation and Instruction Scheduling for RISCs Bradlee, Eggers, Henry (UWashington) ASPLOS 1991, p. 122
[BHE91] The Marion System for Retargetable Instruction Scheduling Bradlee, Henry, Eggers (UWashington) PLDI 1991, p. 229
[BeRo91] Global Instruction Scheduling for Superscalar Machines Bernstein, Rodeh PLDI 1991, p. 241
[RGSL96] Software Pipelining Showdown: Optimal vs. Heuristic Methods in a Production Compiler Ruttenberg, Gao, Stoutchinin, Lichtenstein (McGill) PLDI 1996, p. 1
Cache Scheduling
[HKC97] Efficient Procedure Mapping Using Cache Line Coloring Hashemi, Kaeli, Calder PLDI 1997, p. 171
[YJKS97] Near-Optimal Intraprocedural Branch Alignment Young, Johnson, Karger, Smith PLDI 1997, p. 183
Cross-Platform Assembly
[RaFe95] The New Jersey Machine-Code Toolkit Ramsey, Fernandez Usenix 1995, p. 289
Dynamic Code Generation
[Engler96] VCODE: A Retargetable, Extensible, Very Fast Dynamic Code Generation System Engler (MIT) PLDI 1996, p. 160
[LDG95] Clarity MCode: A Retargetable Intermediate Representation for Compilation Lewis, Deutsch, Goldstein IR 1995, p. 119
[EHK96] 'C: A Language for High-Level, Efficient, and Machine-Independent Dynamic Code Generation Engler, Hsieh, Kaashoek (MIT) POPL 1996, p. 131
[PoEngKaa] tcc: A Template-Based Compiler for 'C Poletto, Engler, Kaashoek (MIT)
[PEK97] tcc: A System for Fast, Flexible, and High-Level Dynamic Code Generation Poletto, Engler, Kaashoek (MIT) PLDI 1997, p. 109
[EngProe94] DCG: An Efficient, Retargetable Dynamic Code Generation System Engler, Proebsting ASPLOS 1994, p. 263
[Morris91] CCG: A Prototype Coagulating Code Generator Morris PLDI 1991, p. 45
[CoNoë96] A General Approach for Run-Time Specialization and its Application to C Consel, Noël POPL 1996, p. 145
[Wall92] Systems for Late Code Modification Wall (Digital) WRL report 1992-3
[Franz94] Code-Generation On-the-Fly: A Key to Portable Software Franz (Zürich) PhD thesis 1994
[KEH91] A Case for Runtime Code Generation Keppel, Eggers, Henry (U Washington) TR 1991-11-04
[Keppel91] A Portable Interface for On-The-Fly Instruction Space Modification Keppel (U Washington) ASPLOS 1991, p. 86
[KEH93] Evaluating Runtime-Compiled Value-Specific Optimizations Keppel, Eggers, Henry (U Washington) TR 1993-11-02
[KeRu93] Faster Dynamic Linking for SPARC V8 and System V.4 Keppel, Russell (U Washington) TR 1993-12-08
Miscellaneous
Data Structures
[BriTo93] An Efficient Representation for Sparse Sets Preston Briggs, Linda Torczon LOPLAS 2:1, Mar 1993, p. 59
Memory Management
[JoWi98] The Memory Fragmentation Problem: Solved? Mark Johnstone, Paul Wilson International Symposium on Memory Management 1998, p. 26-36
[Lea] A Memory Allocator Doug Lea http://gee.cs.oswego.edu/dl/html/malloc.html
Numerics
[Clinger90] How to Read Floating Point Numbers Accurately William Clinger PLDI 1990, p. 92-101
[SteWhi90] How to Print Floating-Point Numbers Accurately Guy Steele, Jon White PLDI 1990, p. 112-123
[Gay90] Correctly Rounded Binary-Decimal and Decimal-Binary Conversions David Gay AT&T Bell Labs Numerical Analysis Manuscript 90-10
[Hanson97] Economical Correctly Rounded Binary Decimal Conversions Kenton Hanson http://www.dnai.com/~khanson/ECRBDC.html
[Unicode20] The Unicode Standard, Version 2.0 The Unicode Consortium Addison-Wesley 1996
[Unicode21] The Unicode Standard, Version 2.1 Lisa Moore Unicode Technical Report #8, 1998
[Unicode30] The Unicode Standard, Version 3.0 The Unicode Consortium http://www.unicode.org/unicode/standard/versions/Unicode3.0.html
[DaDü98] Unicode Normalization Forms Mark Davis, Martin Dürst Unicode Technical Report #15, 1998
Prettyprinting
[Oppen80] Prettyprinting Derek Oppen TOPLAS 2:4, Oct 1980, p. 465-483
[Waters89] XP: A Common Lisp Pretty Printing System Richard Waters MIT AI Memo 1102, Mar 1989
[Waters90] Pretty Printing Richard Waters Chapter 27 of [Steele90]
Software Evolution
[FooYo96] The Selfish Class Brian Foote, Joseph Yoder Third Pattern Languages of Programming Conference, 1996
[FooYo97] Big Ball of Mud Brian Foote, Joseph Yoder Fourth Pattern Languages of Programming Conference, 1997

Waldemar Horwat
Last modified Thursday, September 27, 2001
up