On arithmetic expressions and trees
Communications of the ACM
On compiling algorithms for arithmetic expressions
Communications of the ACM
A note on some compiling algorithms
Communications of the ACM
An algorithm for coding efficient arithmetic operations
Communications of the ACM
Measures of ideal execution architectures
IBM Journal of Research and Development
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
The effect of instruction set complexity on program size and memory performance
ASPLOS II Proceedings of the second international conference on Architectual support for programming languages and operating systems
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
Code scheduling and register allocation in large basic blocks
ICS '88 Proceedings of the 2nd international conference on Supercomputing
Code generation using tree matching and dynamic programming
ACM Transactions on Programming Languages and Systems (TOPLAS)
On the Minimization of Loads/Stores in Local Register Allocation
IEEE Transactions on Software Engineering
Linear-time, optimal code scheduling for delayed-load architectures
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
PLDI '94 Proceedings of the ACM SIGPLAN 1994 conference on Programming language design and implementation
Improving the ratio of memory operations to floating-point operations in loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient instruction scheduling for delayed-load architectures
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
Spill-free parallel scheduling of basic blocks
Proceedings of the 28th annual international symposium on Microarchitecture
Generating machine specific optimizing compilers
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Code generation for fixed-point DSPs
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Storage assignment optimizations to generate compact and efficient code on embedded DSPs
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Dual-issue scheduling with spills for binary trees
Proceedings of the tenth annual ACM-SIAM symposium on Discrete algorithms
A new synthesis for the MIMOLA software system
DAC '86 Proceedings of the 23rd ACM/IEEE Design Automation Conference
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
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)
A Completeness Theorem for Straight-Line Programs with Structured Variables
Journal of the ACM (JACM)
Optimal Code Generation for Expression Trees
Journal of the ACM (JACM)
Code Generation for a One-Register Machine
Journal of the ACM (JACM)
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)
On the Simplification and Equivalence Problems for Straight-Line Programs
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)
On Parsing and Compiling Arithmetic Expressions on Vector Computers
ACM Transactions on Programming Languages and Systems (TOPLAS)
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
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 unified approach to global program optimization
POPL '73 Proceedings of the 1st annual 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
Global array reference allocation
ACM Transactions on Design Automation of Electronic Systems (TODAES)
Embedded software in real-time signal processing systems: design technologies
Readings in hardware/software co-design
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
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
IEEE Transactions on Computers
Minimum Register Instruction Sequence Problem: Revisiting Optimal Code Generation for DAGs
IPDPS '01 Proceedings of the 15th International Parallel & Distributed Processing Symposium
Parallel Compilation on Associative Computers
PACT '94 Proceedings of the IFIP WG10.3 Working Conference on Parallel Architectures and Compilation Techniques
Cross-Architectural Performance Portability of a Java Virtual Machine Implementation
Proceedings of the 2nd Java Virtual Machine Research and Technology Symposium
Integrated prepass scheduling for a Java Just-In-Time compiler on the IA-64 architecture
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
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
Optimal code generation for expression trees
STOC '75 Proceedings of seventh annual ACM symposium on Theory of computing
Complete register allocation problems
STOC '73 Proceedings of the fifth annual ACM symposium on Theory of computing
The complexity of the equivalence problem for straight-line programs
STOC '80 Proceedings of the twelfth annual ACM symposium on Theory of computing
Levels of abstraction and compilers
ACM '76 Proceedings of the 1976 annual conference
Design of a microprogramming language
MICRO 6 Conference record of the 6th annual workshop on Microprogramming
Construction of a transportable, multi-pass compiler for extended Pascal
SIGPLAN '79 Proceedings of the 1979 SIGPLAN symposium on Compiler construction
An experiment in table driven code generation
SIGPLAN '82 Proceedings of the 1982 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
A formal approach to code optimization
Proceedings of a symposium on Compiler optimization
Experience with porting the Portable C Compiler
ACM '82 Proceedings of the ACM '82 conference
Code generation for expressions with common subexpressions (Extended Abstract)
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
An experimental C compiler for the Cray 2 computer
ACM SIGPLAN Notices
Optimal evaluation order for expressions with redundant subexpressions
ACM SIGPLAN Notices - Abstracts in programming language-related research
SIGCSE '78 Papers of the SIGCSE/CSA technical symposium on Computer science education
Mio: fast multipass partitioning via priority-based instruction scheduling
Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware
Optimal automatic multi-pass shader partitioning by dynamic programming
Proceedings of the ACM SIGGRAPH/EUROGRAPHICS conference on Graphics hardware
Factoring and eliminating common subexpressions in polynomial expressions
Proceedings of the 2004 IEEE/ACM International conference on Computer-aided design
Attribute grammars and the teaching of compiler design and implementation
Journal of Computing Sciences in Colleges
Near-optimal instruction selection on dags
Proceedings of the 6th annual IEEE/ACM international symposium on Code generation and optimization
A host computer system for software development
ACM '74 Proceedings of the 1974 annual ACM conference - Volume 2
Multiple evaluators in an extensible programming system
AFIPS '72 (Fall, part II) Proceedings of the December 5-7, 1972, fall joint computer conference, part II
The C programming language and a C compiler
IBM Systems Journal
Register assignment algorithm for generation of highly optimized object code
IBM Journal of Research and Development
Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture
Memory-optimal evaluation of expression trees involving large objects
Computer Languages, Systems and Structures
Register pressure aware scheduling for high level synthesis
Proceedings of the 16th Asia and South Pacific Design Automation Conference
Treegraph-based Instruction Scheduling for Stack-based Virtual Machines
Electronic Notes in Theoretical Computer Science (ENTCS)
Manipulating MAXLIVE for spill-free register allocation
LCPC'05 Proceedings of the 18th international conference on Languages and Compilers for Parallel Computing
Generating optimal contiguous evaluations for expression DAGs
Computer Languages
Compiling lambda-expressions using continuations and factorizations
Computer Languages
Scheduling expression DAGs for minimal register need
Computer Languages
Model and complexity results for tree traversals on hybrid platforms
Euro-Par'13 Proceedings of the 19th international conference on Parallel Processing
Hi-index | 0.01 |
The problem of evaluating arithmetic expressions on a machine with N ≥ 1 general purpose registers is considered. It is initially assumed that no algebraic laws apply to the operators and operands in the expression. An algorithm for evaluation of expressions under this assumption is proposed, and it is shown to take the shortest possible number of instructions. It is then assumed that certain operators are commutative or both commutative and associative. In this case a procedure is given for finding an expression equivalent to a given one and having the shortest possible evaluation sequence. It is then shown that the algorithms presented here also minimize the number of storage references in the evaluation.