skip to main content
Volume 16, Issue 4July 1994
Editor:
Publisher:
  • Association for Computing Machinery
  • New York
  • NY
  • United States
ISSN:0164-0925
EISSN:1558-4593
Reflects downloads up to 10 Feb 2025Bibliometrics
Skip Table Of Content Section
article
Open Access
Transforming acyclic programs

An unfold/fold transformation system is a source-to-source rewriting methodology devised to improve the efficiency of a program. Any such transformation should preserve the main properties of the initial program: among them, termination. In the field of ...

article
Open Access
Static slicing in the presence of goto statements

A static program slice is an extract of a program which can help our understanding of the behavior of the program; it has been proposed for use in debugging, optimization, parallelization, and integration of programs. This article considers two types of ...

article
Open Access
The definition of dependence distance

Several definitions of dependence distance can be found in the literature. A single coherent definition is the vector distance between the iteration vectors of two iterations involved in a dependence relation. Different ways to associate iteration ...

article
Open Access
Optimal code motion: theory and practice

An implementation-oriented algorithm for lazy code motion is presented that minimizes the number of computations in programs while suppressing any unnecessary code motion in order to avoid superfluous register pressure. In particular, this variant of the ...

article
Open Access
Avoidance and suppression of compensation code in a trace scheduling compiler

Trace scheduling is an optimization technique that selects a sequence of basic blocks as a trace and schedules the operations from the trace together. If an operation is moved across basic block boundaries, one or more compensation copies may be required ...

article
Open Access
Operational semantics-directed compilers and machine architectures

We consider the task of automatically constructing intermediate-level machine architectures and compilers generating code for these architectures, given operational semantics for source languages. We use operational semantics in the form of abstract ...

article
Open Access
Static analysis of upper and lower bounds on dependences and parallelism

Existing compilers often fail to parallelize sequential code, even when a program can be manually transformed into parallel form by a sequence of well-understood transformations (as in the case for many of the Perfect Club Benchmark programs). These ...

article
Open Access
Functions as passive constraints in LIFE

LIFE is a programming language proposing to integrate logic programming, functional programming, and object-oriented programming. It replaces first-order terms with ψ-terms, data structures that allow computing with partial information. These are ...

article
Open Access
Optimally profiling and tracing programs

This paper describes algorithms for inserting monitoring code to profile and trace programs. These algorithms greatly reduce the cost of measuring programs with respect to the commonly used technique of placing code in each basic block. Program profiling ...

article
Open Access
Modular logic programming

Modularity is a key issue in the design of modern programming languages. When designing modular features for declarative languages in general, and for logic programming languages in particular, the challenge lies in avoiding the superimposition of a ...

Subjects

Comments