|
ABSTRACT
Computations can generally be separated into stages, which are distinguished from one another by either frequency of execution or availability of data. <i>Precomputation</i> and <i>frequency reduction</i> involve moving computation among a collection of stages so that work is done as early as possible (so less time is required in later steps) and as infrequently as possible (to reduce overall time).We present, by means of examples, several general transformation techniques for carrying out precomputation transformations. We illustrate the techniques by deriving fragments of simple compilers from interpreters, including an example of Prolog compilation, but the techniques are applicable in a broad range of circumstances. Our aim is to demonstrate how perspicuous accounts of precomputation and frequency reduction can be given for a wide range of applications using a small number of relatively straightforward techniques.Related work in partial evaluation, semantically directed compilation, and compiler optimization is discussed.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
|
 |
2
|
|
| |
3
|
{Darlington81} Darlington, J., <i>The design of efficient data representations.</i> Department of Computing and Control, Imperial College London, 1981.
|
| |
4
|
{Darlington82} Darlington, J., <i>The structured description of algorithm derivations.</i> International Symposium on Algorithmic Languages, Amsterdam, North Holland, 1982.
|
| |
5
|
{Emanuelson80} Emanuelson, P., <i>Performance enhancement in a well-structured pattern matcher through partial evaluation.</i> Ph. D. thesis, Linköping University, 1980.
|
| |
6
|
{Ershov78} Ershov, A., <i>On the partial computation principle.</i> Information Processing Letters, Vol. 6, No. 2, pp. 38--41, April 1977.
|
| |
7
|
{Ershov78} Ershov, A., <i>On the essence of compilation.</i> In: <b>Formal Descriptions of Programming Concepts.</b> Neuhold, E. J., ed., North-Holland, 1978.
|
| |
8
|
{Ershov82} Ershov, A., <i>Mixed computation: potential applications and problems for study.</i> Theoretical Computer Science No. 18, pp. 41--67, 1982.
|
 |
9
|
|
| |
10
|
{Futamura71} Futamura, Y., <i>Partial evaluation of computation process---an approach to a compiler-compiler.</i> Systems. Computers. Controls Vol. 2, No. 5, pp. 721--728, 1971.
|
| |
11
|
{Jones83} Jones, N. D. and A. Mycroft, <i>Stepwise development of operational and denotational semantics for prolog.</i> Draft version, DIKU, University of Copenhagen, April 1983.
|
| |
12
|
{Jones85} Jones, N. D., P. Sestoft and H. Søndergaard. <i>An experiment in partial evaluation: the generation of a compiler generator.</i> DIKU Report 85/1, University of Copenhagen, 1985.
|
| |
13
|
{Kahn84} Kahn, K. and M. Carlsson, <i>The compilation of prolog programs without the use of a prolog compiler.</i> International Conference on Fifth Generation Computer Systems, ICOT, pp. 348--355, 1984.
|
 |
14
|
|
| |
15
|
|
| |
16
|
{Mosses79} Mosses, P., <i>SIS - semantics implementation system, reference manual and users guide.</i> DAIMI MD-30, Århus University, 1979.
|
| |
17
|
{Nillson84} Nillson, J. F., <i>Formal vienna-definition-method models of prolog.</i> In: <b>Implementations of Prolog.</b> Campbell, J. A. ed., Ellis Horwood, 1984
|
 |
18
|
|
| |
19
|
|
 |
20
|
|
 |
21
|
|
| |
22
|
|
 |
23
|
|
| |
24
|
{Scherlis83} Scherlis, W. L. and D. Scott, <i>First steps towards inferential programming.</i> IFIP Congress 83, North-Holland, 1983.
|
| |
25
|
{Scherlis85} Scherlis, W. L., <i>Adapting abstract data types.</i> Carnegie-Mellon University, 1985.
|
 |
26
|
|
| |
27
|
{Schmidt85b} Schmidt, D. A., <i>Tuning architectures to semantic definitions.</i> Iowa State University, 1985.
|
| |
28
|
|
 |
29
|
|
 |
30
|
|
 |
31
|
|
|