The proceedings contain 29 papers. The topics discussed include: improving register allocation for subscripted variables;profile guided code positioning;fast breakpoints: design and implementation;representing control...
ISBN:
(纸本)0897913647
The proceedings contain 29 papers. The topics discussed include: improving register allocation for subscripted variables;profile guided code positioning;fast breakpoints: design and implementation;representing control in the presence of first-class continuations;register allocation across procedure and module boundaries;graph coloring register allocation for processors with multi-register operands;two-directional record layout for multiple inheritance;fast code generation using automatically-generated decision trees;task granularity analysis in logic programs;how to print floating-point numbers accurately;compilation of Haskell array comprehensions for scientific computing;iterative type analysis and extended message splitting: optimizing dynamically-typed object-oriented programs;type-dependent parameter inference;generators and the replicator control structure in the parallel environment of ALLOY;and higher-order attribute grammars and editing environments.
This conferenceproceedings contains 30 papers. The main subjects are code generation, code positioning, register allocation, representing control, program optimization, floating-point numbers accurately, optimizing d...
详细信息
ISBN:
(纸本)0897913647
This conferenceproceedings contains 30 papers. The main subjects are code generation, code positioning, register allocation, representing control, program optimization, floating-point numbers accurately, optimizing dynamically-typed object-oriented programs, higher-order attribute grammars and editing environments, program and data dependence, demand-driven interpretation of imperative languages, analysis of pointers and structures, and compact representations for control dependence.
This paper describes a method for compiling programs using interprocedural register allocation. A strategy for handling programs built from multiple modules is presented, as well as algorithms for global variable prom...
详细信息
ISBN:
(纸本)9780897913645
This paper describes a method for compiling programs using interprocedural register allocation. A strategy for handling programs built from multiple modules is presented, as well as algorithms for global variable promotion and register spill code motion. These algorithms attempt to address some of the shortcomings of previous interprocedural register allocation strategies. Results are given for an implementation on a single register file RISC-based architecture.
FNC-2 is a new attribute grammar processing system aiming at expressive power, efficiency, ease of use and versatility. Its development at INRIA started in 1986, and a first running prototype is available since early ...
详细信息
ISBN:
(纸本)0897913647
FNC-2 is a new attribute grammar processing system aiming at expressive power, efficiency, ease of use and versatility. Its development at INRIA started in 1986, and a first running prototype is available since early 1989. Its most important features are: efficient exhaustive and incremental visit-sequence-based evaluation of strongly (absolutely) non-circular AGs;extensive space optimizations;a specially-designed AG-description language, with provisions for true modularity;portability and versatility of the generated evaluators;complete environment for application development. This paper briefly describes the design and implementation of FNC-2 and its peripherals. Then preliminary experience with the system is reported.
While logic programminglanguages offer a great deal of scope for parallelism, there is usually some overhead associated with the execution of goals in parallel because of the work involved in task creation and schedu...
详细信息
ISBN:
(纸本)0897913647
While logic programminglanguages offer a great deal of scope for parallelism, there is usually some overhead associated with the execution of goals in parallel because of the work involved in task creation and scheduling. In practice, therefore, the 'granularity' of a goal, i.e. an estimate of the work available under it, should be taken into account when deciding whether or not to execute a goal concurrently as a separate task. This paper describes a method for estimating the granularity of a goal at compile time. The runtime overhead associated with our approach is usually quite small, and the performance improvements resulting from the incorporation of grainsize control can be quite good. This is shown by means of experimental results.
This paper presents the results of our investigation of code positioning techniques using execution profile data as input into the compilation process. The primary objective of the positioning is to reduce the overhea...
详细信息
ISBN:
(纸本)0897913647
This paper presents the results of our investigation of code positioning techniques using execution profile data as input into the compilation process. The primary objective of the positioning is to reduce the overhead of the instruction memory hierarchy. After initial investigation in the literature, we decided to implement two prototypes for the Hewlett-Packard Precision Architecture (PA-RISC). The first, built on top of the linker, positions code based on whole procedures. This prototype has the ability to move procedures into an order that is determined by a 'closest is best' strategy. The algorithms we implemented are described through examples in this paper. The performance improvements from our work are also summarized in various tables and charts.
The need for searching a space of solutions appears often. Many problems, such as iteration over a dynamically created domain, can be expressed most naturally using a generate-and-process style. Serial programming lan...
详细信息
ISBN:
(纸本)9780897913645
The need for searching a space of solutions appears often. Many problems, such as iteration over a dynamically created domain, can be expressed most naturally using a generate-and-process style. Serial programminglanguages typically support solutions of these problems by providing some form of generators or backtracking.A parallel programminglanguage is more demanding since it needs to be able to express parallel generation and processing of elements. Failure driven computation is no longer sufficient and neither is multiple-assignment to generated *** describe the replicator control operator used in the high level parallel programminglanguage ALLOY. The replicator control operator provides a new view of generators which deals with these problems.
We have designed and implemented a fast breakpoint facility. Breakpoints are usually thought of as a feature of an interactive debugger, in which case the breakpoints need not be particularly fast. In our environment ...
详细信息
ISBN:
(纸本)0897913647
We have designed and implemented a fast breakpoint facility. Breakpoints are usually thought of as a feature of an interactive debugger, in which case the breakpoints need not be particularly fast. In our environment breakpoints are often used for non-interactive information gathering;for example, procedure call count and statement execution count profiling. When used non-interactively, breakpoints should be as fast as possible, so as to perturb the execution of the program as little as possible. Even in interactive debuggers, a conditional breakpoint facility would benefit from breakpoints that could transfer to the evaluation of the condition rapidly, and continue expeditiously if the condition were not satisfied. Such conditional breakpoints could be used to check assertions, etc. Program advising could also make use of fast breakpoints. Examples of advising include tracing, timing, and even animation, all of which should be part of an advanced programming environment.
Consider the problem of converting decimal scientific notation for a number into the best binary floating point approximation to that number, for some fixed precision. This problem cannot be solved using arithmetic of...
详细信息
ISBN:
(纸本)0897913647
Consider the problem of converting decimal scientific notation for a number into the best binary floating point approximation to that number, for some fixed precision. This problem cannot be solved using arithmetic of any fixed precision. Hence the IEEE Standard for Binary Floating-Point Arithmetic does not require the result of such a conversion to be the best approximation. This paper presents an efficient algorithm that always finds the best approximation. The algorithm uses a few extra bits of precision to compute an IEEE-conforming approximation while testing an intermediate result to determine whether the approximation could be other than the best. If the approximation might not be the best, then the best approximation is determined by a few simple operations on multiple-precision integers, where the precision is determined by the input. When using 64 bits of precision to compute IEEE double precision results, the algorithm avoids higher-precision arithmetic over 99% of the time.
Several recent code generators [4,5,6,8] use dagrewriting rules to accomplish both code generation and peephole optimization, and they compile these rules into hard code to generate code quickly. The chop system [6], ...
详细信息
ISBN:
(纸本)0897913647
Several recent code generators [4,5,6,8] use dagrewriting rules to accomplish both code generation and peephole optimization, and they compile these rules into hard code to generate code quickly. The chop system [6], for example, runs twice as fast as both pcc and the GNU C compiler gcc on a Sun 3/50 system and generates comparable code. These figures are for entire compilers;the code generators themselves run about seven times faster than comparable code generators. This paper describes a new system, currently under development, that further increases the speed of automatically-generated retargetable code generation. It offers two principal advantages over its predecessors.
暂无评论