The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The Generation of Optimal Code for Arithmetic Expressions
Journal of the ACM (JACM)
An axiomatic approach to code optimization for expressions
Journal of the ACM (JACM)
The Generation of Optimal Code for Stack Machines
Journal of the ACM (JACM)
Code Generation for a One-Register Machine
Journal of the ACM (JACM)
A system for typesetting mathematics
Communications of the ACM
On arithmetic expressions and trees
Communications of the ACM
On compiling algorithms for arithmetic expressions
Communications of the ACM
The Design and Analysis of Computer Algorithms
The Design and Analysis of Computer Algorithms
Characterizations of flowchartable recursions short version
STOC '72 Proceedings of the fourth annual ACM symposium on Theory of computing
The complexity of theorem-proving procedures
STOC '71 Proceedings of the third annual ACM symposium on Theory of computing
A compiler writing system with optimization capabilities for complex object order structures
A compiler writing system with optimization capabilities for complex object order structures
Optimal chaining in expression trees
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
A retargetable instruction reorganizer
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
DAGON: technology binding and local optimization by DAG matching
DAC '87 Proceedings of the 24th ACM/IEEE Design Automation Conference
Scheduling arithmetic and load operations in parallel with no spilling
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Optimal Chaining in Expression Trees
IEEE Transactions on Computers
Anatomy of a hardware compiler
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Scheduling expressions on a pipelined processor with a maximal delay of one cycle
ACM Transactions on Programming Languages and Systems (TOPLAS)
DAGON: Technology binding and local optimization by DAG matching
25 years of DAC Papers on Twenty-five years of electronic design automation
Code generation using tree matching and dynamic programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
Layout driven technology mapping
DAC '91 Proceedings of the 28th ACM/IEEE Design Automation Conference
BURG: fast optimal instruction selection and tree parsing
ACM SIGPLAN Notices
Engineering a simple, efficient code-generator generator
ACM Letters on Programming Languages and Systems (LOPLAS)
Linear logic and permutation stacks—the Forth shall be first
ACM SIGARCH Computer Architecture News - Special issue: panel sessions of the 1991 workshop on multithreaded computers
Optimal code generation for embedded memory non-homogeneous register architectures
ISSS '95 Proceedings of the 8th international symposium on System synthesis
Allocating registers in multiple instruction-issuing processors
PACT '95 Proceedings of the IFIP WG10.3 working conference on Parallel architectures and compilation techniques
Instruction selection using binate covering for code size optimization
ICCAD '95 Proceedings of the 1995 IEEE/ACM international conference on Computer-aided design
Generating machine specific optimizing compilers
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Instruction set mapping for performance optimization
ICCAD '93 Proceedings of the 1993 IEEE/ACM international conference on Computer-aided design
Retrospective on high-level language computer architecture
25 years of the international symposia on Computer architecture (selected papers)
Code generation for fixed-point DSPs
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Dual-issue scheduling with spills for binary trees
Proceedings of the tenth annual ACM-SIAM symposium on Discrete algorithms
Optimal scheduling of arithmetic operations in parallel with memory access (preliminary version)
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient tree pattern matching (extended abstract): an aid to code generation
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Code Generation for Expressions with Common Subexpressions
Journal of the ACM (JACM)
Efficient Computation of Expressions with Common Subexpressions
Journal of the ACM (JACM)
Instruction Sets for Evaluating Arithmetic Expressions
Journal of the ACM (JACM)
Optimal code generation for expressions on super scalar machines
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
Retargetable Compiler Code Generation
ACM Computing Surveys (CSUR)
Graph-based code selection techniques for embedded processors
ACM Transactions on Design Automation of Electronic Systems (TODAES)
A Dynamic Programming Approach to Optimal Integrated Code Generation
OM '01 Proceedings of the 2001 ACM SIGPLAN workshop on Optimization of middleware and distributed systems
The very portable optimizer for digital signal processors
CASES '01 Proceedings of the 2001 international conference on Compilers, architecture, and synthesis for embedded systems
Experience with a Graham-Glanville style code generator
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Using dynamic programming to generate optimized code in a Graham-Glanville style code generator
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
A portable compiler: theory and practice
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Almost control-free (indeterministic) parallel computation on permit schemes
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Efficient computation of expressions with common subexpressions
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A new method for compiler code generation
POPL '78 Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Code-generation for machines with multiregister operations
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Optimal integrated code generation for clustered VLIW architectures
Proceedings of the joint conference on Languages, compilers and tools for embedded systems: software and compilers for embedded systems
Global array reference allocation
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Logic Synthesis and Verification
Embedded software in real-time signal processing systems: design technologies
Readings in hardware/software co-design
Instruction selection using binate covering for code size optimization
Readings in hardware/software co-design
Instruction generation and regularity extraction for reconfigurable processors
CASES '02 Proceedings of the 2002 international conference on Compilers, architecture, and synthesis for embedded systems
Scheduling expression trees for delayed-load architectures
Journal of Systems Architecture: the EUROMICRO Journal
Static resource models for code-size efficient embedded processors
ACM Transactions on Embedded Computing Systems (TECS)
An Empirical Study of Retargetable Compilers
PSI '02 Revised Papers from the 4th International Andrei Ershov Memorial Conference on Perspectives of System Informatics: Akademgorodok, Novosibirsk, Russia
Code Generation for Multi-Threaded Architectures from Dataflow Graphs
PACT '93 Proceedings of the IFIP WG10.3. Working Conference on Architectures and Compilation Techniques for Fine and Medium Grain Parallelism
Rewriting Strategies for Instruction Selection
RTA '02 Proceedings of the 13th International Conference on Rewriting Techniques and Applications
User-Extensible SimplificationType-Based Optimizer Generators
CC '01 Proceedings of the 10th International Conference on Compiler Construction
sEc: A Portable Interpreter Optimizing Technique for Embedded Java Virtual Machine
Proceedings of the 2nd Java Virtual Machine Research and Technology Symposium
A Graph Based Processor Model for Retargetable Code Generation
EDTC '96 Proceedings of the 1996 European conference on Design and Test
Automatic microcode generation for horizontally microprogrammed processors
MICRO 14 Proceedings of the 14th annual workshop on Microprogramming
A comparison of instruction sets for stack machines
STOC '77 Proceedings of the ninth annual ACM symposium on Theory of computing
Compiler design for efficient code generation and program optimization
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
A practical method for code generation based on exhaustive search
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Engineering a production code generator
SIGPLAN '82 Proceedings of the 1982 SIGPLAN symposium on Compiler construction
Global register allocation for non-equivalent register sets
ACM SIGPLAN Notices
Application-specific instruction generation for configurable processor architectures
FPGA '04 Proceedings of the 2004 ACM/SIGDA 12th international symposium on Field programmable gate arrays
Effective compiler generation by architecture description
Proceedings of the 2006 ACM SIGPLAN/SIGBED conference on Language, compilers, and tool support for embedded systems
Transient variable caching in Java’s stack-based intermediate representation
Scientific Programming
Optimal chain rule placement for instruction selection based on SSA graphs
SCOPES '07 Proceedingsof the 10th international workshop on Software & compilers for embedded systems
Compiler generation from structural architecture descriptions
CASES '07 Proceedings of the 2007 international conference on Compilers, architecture, and synthesis for embedded systems
Near-optimal instruction selection on dags
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
Generalized instruction selection using SSA-graphs
Proceedings of the 2008 ACM SIGPLAN-SIGBED conference on Languages, compilers, and tools for embedded systems
A syntax-directed translator with extended domain of locality
CHSLP '06 Proceedings of the Workshop on Computationally Hard Problems and Joint Inference in Speech and Language Processing
BURS-based instruction set selection
PSI'06 Proceedings of the 6th international Andrei Ershov memorial conference on Perspectives of systems informatics
Composing transformations to optimize linear code
ICTAC'07 Proceedings of the 4th international conference on Theoretical aspects of computing
Generating optimal contiguous evaluations for expression DAGs
Computer Languages
Heuristic chaining in directed acyclic graphs
Computer Languages
Scheduling expression DAGs for minimal register need
Computer Languages
Hi-index | 0.01 |
This paper discusses algorithms which transform expression trees into code for register machines. A necessary and sufficient condition for optimality of such an algorithm is derived, which applies to a broad class of machines. A dynamic programming algorithm is then presented which produces optimal code for any machine in this class; this algorithm runs in time linearly proportional to the size of the input.