The concept of a supercompiler
ACM Transactions on Programming Languages and Systems (TOPLAS) - The MIT Press scientific computation series
Denotational semantics: a methodology for language development
Denotational semantics: a methodology for language development
Specialisation of Prolog and FCP programs using abstract interpretation
New Generation Computing - Special Issue: Selected Papers from the Workshop on Partial Evaluation and Mixed
Partial evaluation of pattern matching in strings
Information Processing Letters
Partial evaluation in logic programming
Journal of Logic Programming
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
Partial evaluation and automatic program generation
Partial evaluation and automatic program generation
Mixtus: an automatic partial evaluator for full Prolog
New Generation Computing
Duplication and partial evaluation: for a better understanding of reflective languages
Lisp and Symbolic Computation - Special issue on computational reflection
ACM Transactions on Programming Languages and Systems (TOPLAS)
IEEE Transactions on Software Engineering
Bootstrapping higher-order program transformers from interpreters
SAC '96 Proceedings of the 1996 ACM symposium on Applied Computing
Domain-specific languages: an annotated bibliography
ACM SIGPLAN Notices
Improving programs by the introduction of recursion
Communications of the ACM
Static and Dynamic Program Compilation by Interpreter Specialization
Higher-Order and Symbolic Computation
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Definitional Interpreters for Higher-Order Programming Languages
Higher-Order and Symbolic Computation
Partial Evaluation of Computation Process—AnApproach to a Compiler-Compiler
Higher-Order and Symbolic Computation
Dynamic Programming via Static Incrementalization
Higher-Order and Symbolic Computation
Partial Evaluation - Practice and Theory, DIKU 1998 International Summer School
Partial Evaluation - Practice and Theory, DIKU 1998 International Summer School
Selected Papers from the Internaltional Seminar on Partial Evaluation
Selected Papers from the Internaltional Seminar on Partial Evaluation
Program Generation, Termination, and Binding-Time Analysis
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Synchronization Analyses for Multiple Recursion Parameters (Extended Abstract)
Selected Papers from the Internaltional Seminar on Partial Evaluation
What Not to Do When Writing an Interpreter for Specialisation
Selected Papers from the Internaltional Seminar on Partial Evaluation
Fast partial evaluation of pattern matching in strings
Proceedings of the 2003 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
A tour of tempo: a program specializer for the C language
Science of Computer Programming - Special issue on program transformation
A compilation and optimization model for aspect-oriented programs
CC'03 Proceedings of the 12th international conference on Compiler construction
A domain-specific language approach to programmable networks
IEEE Transactions on Systems, Man, and Cybernetics, Part C: Applications and Reviews
Imperative program optimization by partial evaluation
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Fast narrowing-driven partial evaluation for inductively sequential programs
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Using program specialization to speed SystemC fixed-point simulation
Proceedings of the 2006 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Jones optimality and hardware virtualization: a report on work in progress
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Imperative-program transformation by instrumented-interpreter specialization
Higher-Order and Symbolic Computation
An investigation of Jones optimality and BTI-universal specializers
Higher-Order and Symbolic Computation
Self-generating program specializers
Information Processing Letters
Formally efficient program instrumentation
RV'10 Proceedings of the First international conference on Runtime verification
Obfuscation by partial evaluation of distorted interpreters
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
Annotation of logic programs for independent and-parallelism by partial evaluation*
Theory and Practice of Logic Programming
Hi-index | 0.00 |
A program may be transformed by specialising an interpreter for the language in which it is written. Efficiency of the transformed program is determined by the efficiency of the interpreter's dynamic operations; the efficiency of its static operations is irrelevant, since all will be "specialised away". This approach is automatic (as automatic as the specialiser is); general, in that it applies to all of the interpreter's input programs; and flexible, in that a wide range of program transformations are achievable since the transformed program inherits the style of the interpreter. The chief practical challenge is understanding cause and effect: how should one write the interpreter so that specialisation produces efficient transformed programs? The core of this paper is a series of examples, both positive and negative, showing how the way the interpreter is written can influence the removal of interpretational overhead, and thus the efficiency and size of the target programs obtained by specialisation. In principle this method can speed up source programs by an arbitrary amount: the limit depends only on how efficiently the interpreter can be written. An example shows that a "memoising" interpreter can yield asymptotic speedup, transforming an exponential-time program into one running in polynomial time. A final analysis is made of the speed of the output programs in relation to the speed of the interpreter from which they are derived. It is argued that this relative speedup is linear, with a constant coefficient depending on the program being transformed.