Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
ORBIT: an optimizing compiler for scheme
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Realistic compilation by program transformation (detailed summary)
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
Improving binding times without explicit CPS-conversion
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
Reasoning about programs in continuation-passing style.
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
ESOP'92 Symposium proceedings on 4th European symposium on programming
Correctness of Procedure Representations in Higher-Order Assembly Language
Proceedings of the 7th International Conference on Mathematical Foundations of Programming Semantics
The scheme 311 compiler an exercise in denotational semantics
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Proceedings of ACM conference on Proving assertions about programs
Rabbit: A Compiler for Scheme
A generic account of continuation-passing styles
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Is continuation-passing useful for data flow analysis?
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
A library of high level control operators
ACM SIGPLAN Lisp Pointers
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
The semantics of future and its use in program optimization
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Let-floating: moving bindings to give faster programs
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Proceedings of the first ACM SIGPLAN international conference on Functional programming
From region inference to von Neumann machines via region representation inference
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A practical and flexible flow analysis for higher-order languages
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Two for the price of one: composing partial evaluation and compilation
Proceedings of the ACM SIGPLAN 1997 conference on Programming language design and implementation
Lambda-splitting: a higher-order approach to cross-module optimizations
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Lambda-dropping: transforming recursive equations into programs with block structure
PEPM '97 Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Single and loving it: must-alias analysis for higher-order languages
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proper tail recursion and space efficiency
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Implementing typed intermediate languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
A practical and flexible flow analysis for higher-order languages
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient and safe-for-space closure conversion
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Control-Flow Analysis for a Calculus of Concurrent Objects
IEEE Transactions on Software Engineering
Online partial evaluation for shift and reset
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Information flow inference for ML
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Contification using dominators
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
The Tail-Recursive SECD Machine
Journal of Automated Reasoning
Information flow inference for ML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Inferring annotated types for inter-procedural register allocation with constructor flattening
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Retraction Approach to CPS Transform
Higher-Order and Symbolic Computation
CPS Translations and Applications: The Cube and Beyond
Higher-Order and Symbolic Computation
Optimizing Nested Loops Using Local CPS Conversion
Higher-Order and Symbolic Computation
Higher-Order and Symbolic Computation
Secure Information Flow via Linear Continuations
Higher-Order and Symbolic Computation
Axioms for Recursion in Call-by-Value
Higher-Order and Symbolic Computation
Safe and Principled Language Interoperation
ESOP '99 Proceedings of the 8th European Symposium on Programming Languages and Systems
Formalizing Implementation Strategies for First-Class Continuations
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
A Calculus for Compiling and Linking Classes
ESOP '00 Proceedings of the 9th European Symposium on Programming Languages and Systems
Secure Information Flow and CPS
ESOP '01 Proceedings of the 10th European Symposium on Programming Languages and Systems
Compiler Construction in Higher Order Logic Programming
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
A Curry-Howard Isomorphism for Compilation and Program Execution
TLCA '99 Proceedings of the 4th International Conference on Typed Lambda Calculi and Applications
Axioms for Recursion in Call-by-Value
FoSSaCS '01 Proceedings of the 4th International Conference on Foundations of Software Science and Computation Structures
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
Taming the IXP network processor
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
A functional correspondence between evaluators and abstract machines
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Polymorphic typed defunctionalization
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A computational formalization for partial evaluation
Mathematical Structures in Computer Science
Program specialization for execution monitoring
Journal of Functional Programming
Inlining as staged computation
Journal of Functional Programming
Journal of Functional Programming
From ML to Ada: Strongly-typed language interoperability via source translation
Journal of Functional Programming
Shrinking lambda expressions in linear time
Journal of Functional Programming
Higher-order control-flow analysis in retrospect: lessons learned, lessons abandoned
ACM SIGPLAN Notices - Best of PLDI 1979-1999
TIL: a type-directed, optimizing compiler for ML
ACM SIGPLAN Notices - Best of PLDI 1979-1999
Offline partial evaluation for shift and reset
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Automatically Restructuring Programs for the Web
Automated Software Engineering
Making a fast curry: push/enter vs. eval/apply for higher-order languages
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Implementing functional logic languages using multiple threads and stores
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Flow graphs for testing sequential erlang programs
ERLANG '04 Proceedings of the 2004 ACM SIGPLAN workshop on Erlang
Monadification of functional programs
Science of Computer Programming - Special issue on program transformation
Strict bidirectional type checking
TLDI '05 Proceedings of the 2005 ACM SIGPLAN international workshop on Types in languages design and implementation
From sequential programs to multi-tier applications by program transformation
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CPS transformation of beta-redexes
Information Processing Letters
MinCaml: a simple and efficient compiler for a minimal functional language
Proceedings of the 2005 workshop on Functional and declarative programming in education
Continuations from generalized stack inspection
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
A monadic approach for avoiding code duplication when staging memoized functions
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Compiling ML polymorphism with explicit layout bitmap
Proceedings of the 8th ACM SIGPLAN international conference on Principles and practice of declarative programming
Dynamic state restoration using versioning exceptions
Higher-Order and Symbolic Computation
Message analysis for concurrent programs using message passing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Formal compiler construction in a logical framework
Higher-Order and Symbolic Computation
Extensible programming with first-class cases
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science - Applied semantics: Selected topics
Specializing continuations a model for dynamic join points
Proceedings of the 6th workshop on Foundations of aspect-oriented languages
Functional Elimination of Φ-instructions
Electronic Notes in Theoretical Computer Science (ENTCS)
A proof theory for machine code
ACM Transactions on Programming Languages and Systems (TOPLAS)
Theoretical Computer Science
Axioms for control operators in the CPS hierarchy
Higher-Order and Symbolic Computation
Separation logic, abstraction and inheritance
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Focusing and higher-order abstract syntax
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation
A scheduling framework for general-purpose parallel languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Compilation as Rewriting in Higher Order Logic
CADE-21 Proceedings of the 21st international conference on Automated Deduction: Automated Deduction
A Calculational Approach to Control-Flow Analysis by Abstract Interpretation
SAS '08 Proceedings of the 15th international symposium on Static Analysis
Lazy Contract Checking for Immutable Data Structures
Implementation and Application of Functional Languages
A Hoare Logic for Call-by-Value Functional Programs
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
UpgradeJ: Incremental Typechecking for Class Upgrades
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Designing aspects for side-effect localization
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Safety Guarantees from Explicit Resource Management
Formal Methods for Components and Objects
CC '09 Proceedings of the 18th International Conference on Compiler Construction: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Resolving Inductive Definitions with Binders in Higher-Order Typed Functional Programming
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
ESOP '09 Proceedings of the 18th European Symposium on Programming Languages and Systems: Held as Part of the Joint European Conferences on Theory and Practice of Software, ETAPS 2009
Control-flow analysis of function calls and returns by abstract interpretation
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Dependent types from counterexamples
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
CPS transformation of beta-redexes
Information Processing Letters
Normalization by evaluation for the computational lambda-calculus
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
Message analysis for concurrent languages
SAS'03 Proceedings of the 10th international conference on Static analysis
A new one-pass transformation into monadic normal form
CC'03 Proceedings of the 12th international conference on Compiler construction
Mechanized verification of CPS transformations
LPAR'07 Proceedings of the 14th international conference on Logic for programming, artificial intelligence and reasoning
The nuggetizer: abstracting away higher-orderness for program verification
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Integrating partial evaluators into interpreters
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
Type-preserving compilation of end-to-end verification of security enforcement
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Equational axiomatization of call-by-name delimited control
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Proceedings of the third ACM Haskell symposium on Haskell
Supercompilation by evaluation
Proceedings of the third ACM Haskell symposium on Haskell
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
A certified framework for compiling and executing garbage-collected languages
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Program verification through characteristic formulae
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Managing continuations for proper tail recursion
Proceedings of the 2010 international conference on Lisp
Recency types for analyzing scripting languages
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Capabilities for uniqueness and borrowing
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
A theory of typestate-oriented programming
Proceedings of the 12th Workshop on Formal Techniques for Java-Like Programs
Verifying stateful programs with substructural state and hoare types
Proceedings of the 5th ACM workshop on Programming languages meets program verification
Translation for intermediate code
MMACTEE'06 Proceedings of the 8th WSEAS international conference on Mathematical methods and computational techniques in electrical engineering
Abstracting abstract machines: a systematic approach to higher-order program analysis
Communications of the ACM
Characteristic formulae for the verification of imperative programs
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Family of abstract interpretations for static analysis of concurrent higher-order programs
SAS'11 Proceedings of the 18th international conference on Static analysis
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Typed compilation against non-manifest base classes
CASSIS'05 Proceedings of the Second international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Hybrid contract checking via symbolic simplification
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Mobile resource guarantees for smart devices
CASSIS'04 Proceedings of the 2004 international conference on Construction and Analysis of Safe, Secure, and Interoperable Smart Devices
Control-flow analysis of function calls and returns by abstract interpretation
Information and Computation
A bytecode logic for JML and types
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Generative operational semantics for relaxed memory models
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Enforcing stateful authorization and information flow policies in fine
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Specifying and verifying the correctness of dynamic software updates
VSTTE'12 Proceedings of the 4th international conference on Verified Software: theories, tools, experiments
Hash-flow taint analysis of higher-order programs
Proceedings of the 7th Workshop on Programming Languages and Analysis for Security
Side-effect localization for lazy, purely functional languages via aspects
Higher-Order and Symbolic Computation
Encoding Abstract Syntax Without Fresh Names
Journal of Automated Reasoning
Introspective pushdown analysis of higher-order programs
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Pause 'n' play: formalizing asynchronous C#
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Tracking linear and affine resources with JAVA(X)
ECOOP'07 Proceedings of the 21st European conference on Object-Oriented Programming
Universal properties of impure programming languages
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A flow-insensitive, modular effect system for purity
Proceedings of the 15th Workshop on Formal Techniques for Java-like Programs
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
The Intel labs Haskell research compiler
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Relaxed separation logic: a program logic for C11 concurrency
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Authenticated data structures, generically
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.02 |
In order to simplify the compilation process, many compilers for higher-order languages use the continuation-passing style (CPS) transformation in a first phase to generate an intermediate representation of the source program. The salient aspect of this intermediate form is that all procedures take an argument that represents the rest of the computation (the “continuation”). Since the nai¨ve CPS transformation considerably increases the size of programs, CPS compilers perform reductions to produce a more compact intermediate representation. Although often implemented as a part of the CPS transformation, this step is conceptually a second phase. Finally, code generators for typical CPS compilers treat continuations specially in order to optimize the interpretation of continuation parameters.A thorough analysis of the abstract machine for CPS terms show that the actions of the code generator invert the nai¨ve CPS translation step. Put differently, the combined effect of the three phases is equivalent to a source-to-source transformation that simulates the compaction phase. Thus, fully developed CPS compilers do not need to employ the CPS transformation but can achieve the same results with a simple source-level transformation.