Results 1 - 10
of
13
Efficient retargetable code generation using bottom-up tree pattern matching
- Computer Languages
, 1990
"... Abstract Instruction selection is the primary task in automatic code generation. This paper proposes a practical system for performing optimal instruction selection based on tree pattern matching for expression trees. A significant feature of the system is its ability to perform code generation with ..."
Abstract
-
Cited by 32 (0 self)
- Add to MetaCart
Abstract Instruction selection is the primary task in automatic code generation. This paper proposes a practical system for performing optimal instruction selection based on tree pattern matching for expression trees. A significant feature of the system is its ability to perform code generation without requiring cost analysis at code generation time. The target machine instructions are specified as attributed production rules in a regular tree grammar augmented with cost information in Graham Glanville style. Instruction selection is modelled as a process of determining minimum cost derivation for a given expression tree. A matching automaton is used for instruction selection. Cost information is encoded into the states of this automaton so that cost analysis is not required at code generation time. The folding technique of table compression is extended to this automaton and two schemes of table compression based on cost information are proposed. Compilers Retargetable code generation Code-generator Code-generator-generator Tree-pattern matching Instruction selection Table compression
Embedded Software in Real-Time Signal Processing Systems: Design Technologies
- Proc. IEEE
, 1997
"... This paper discusses design technology issues for embedded systems using processor cores, with a focus on software compilation tools. Architectural characteristics of contemporary processor cores are reviewed and tool requirements are formulated. This is followed by a comprehensive survey of both ex ..."
Abstract
-
Cited by 15 (0 self)
- Add to MetaCart
This paper discusses design technology issues for embedded systems using processor cores, with a focus on software compilation tools. Architectural characteristics of contemporary processor cores are reviewed and tool requirements are formulated. This is followed by a comprehensive survey of both existing and new software compilation techniques that are considered important in the context of embedded processors
Metamodel driven model migration
- Vanderbilt University
, 2003
"... I love you, and I’m proud of you too. Thanks for being here for me. Jon iii ACKNOWLEDGEMENTS I give many thanks to my advisor, Dr. Gabor Karsai for being the Best All-Around Advisor™. Gabor, without your excellent teaching skills and motivational abilities, I would not be in the position I am today. ..."
Abstract
-
Cited by 14 (2 self)
- Add to MetaCart
I love you, and I’m proud of you too. Thanks for being here for me. Jon iii ACKNOWLEDGEMENTS I give many thanks to my advisor, Dr. Gabor Karsai for being the Best All-Around Advisor™. Gabor, without your excellent teaching skills and motivational abilities, I would not be in the position I am today. Vanderbilt is lucky to have you, as will be any other student under your tutelage. I also thank very heartily the other members of my committee. Dr. Janos Sztipanovits, for his political insight (and vision for my future career); Dr. Akos Ledeczi, for holding my feet to the fire when it comes to sticking up for the value of my research, and also social interactions within ISIS; Dr. Greg Nordstrom, for (as usual) providing valuable comments in the discussion of all things metamodeling related, not to mention being an all-around good guy to bounce ideas all-around with; and of course Dr. Doug
Destination-driven code generation
, 1990
"... Destination-driven code generation is a simple top-down technique that allows the code generated for a program phrase to depend upon its context in an abstract syntax tree. The context is encapsulated in a data destination and a control destination. The data destination specifies where the value com ..."
Abstract
-
Cited by 10 (1 self)
- Add to MetaCart
Destination-driven code generation is a simple top-down technique that allows the code generated for a program phrase to depend upon its context in an abstract syntax tree. The context is encapsulated in a data destination and a control destination. The data destination specifies where the value computed by an expression is to be stored, while the control destination specifies where program execution is to resume after computation of the value. Together, the destinations allow a code generator to specify data and control flow dependencies between subcomputations. As a result, these subcomputations can be "wired" together in an efficient manner. We illustrate the technique by presenting a code generator for a subset of the programming language C. This technique has been used in the implementation of an incremental compiler for the Scheme programming language that generates code for one of several computer architectures.
Global Code Selection for Directed Acyclic Graphs
, 1994
"... . We describe a novel technique for code selection based on data-flow graphs, which arise naturally in the domain of digital signal processing. Code selection is the optimized mapping of abstract operations to partial machine instructions. The presented method performs an important task within t ..."
Abstract
-
Cited by 10 (2 self)
- Add to MetaCart
. We describe a novel technique for code selection based on data-flow graphs, which arise naturally in the domain of digital signal processing. Code selection is the optimized mapping of abstract operations to partial machine instructions. The presented method performs an important task within the retargetable microcode generator CBC, which was designed to cope with the requirements arising in the context of custom digital signal processor (DSP) programming. The algorithm exploits a graph representation in which control-flow is modeled by scopes. 1 Introduction In the domain of medium-throughput digital signal processing, micro-programmable processor cores are frequently chosen for system realization. By adding dedicated hardware (accelerator paths), these cores are tailored to the needs of new applications. Optimized processor modules can be reused, which is a major benefit compared to high-level synthesis [28] where a completely new design is developed for each application. ...
Applying Compiler Techniques to Diagram Recognition
- In Proceedings of the Sixteenth International Conference on Pattern Recognition
, 2002
"... Compiler techniques are effective and efficient in processing textual programming languages. These techniques can be adapted to recognition and processing of two-dimensional languages (diagrams). Already, grammars and parsers have been used in a variety of diagramrecognition and diagram-processing t ..."
Abstract
-
Cited by 8 (4 self)
- Add to MetaCart
Compiler techniques are effective and efficient in processing textual programming languages. These techniques can be adapted to recognition and processing of two-dimensional languages (diagrams). Already, grammars and parsers have been used in a variety of diagramrecognition and diagram-processing tasks. Here we explore the use of two other compiler techniques in pattern recognition systems. The first is compiler-style use of trees and tree transformation. The second is a multi-pass control structure, with a clear separation between layout, lexical, syntactic, and semantic analysis. Our proposal is illustrated on a case study involving recognition of hand- drawn mathematics notation.
Language Definition and Implementation
- Australian Computer Science Communications
, 1989
"... Many languages have been designed to date, of which a large number have never been implemented and the majority are specified in a very imprecise manner. For a language to receive serious consideration among the computer science community, it generally must have been implemented after its design. Ho ..."
Abstract
-
Cited by 6 (4 self)
- Add to MetaCart
Many languages have been designed to date, of which a large number have never been implemented and the majority are specified in a very imprecise manner. For a language to receive serious consideration among the computer science community, it generally must have been implemented after its design. However, it is the matter of a precise definition which is often forgotten or ignored and yet it is one of the most important aspects of a language when considered in the context of the evolution of programming languages. The language definition is the vehicle by which the rules regarding syntax and semantics are clearly stated and conveyed. It allows for the comparison of languages independent of any implementation or machine architecture. Furthermore, by employing techniques with a formal basis, it is also possible to use the language definition as the source for the automatic generation of a language implementation. This strongly suggests that language designers should precisely define thei...
Towards Optimizing Code Generation by Domain-Sensitive Macro Expansion
, 1997
"... : Many modern code generation methods use tree pattern matching with dynamic programming. However, especially in the case of an irregular special-purpose processor architecture their lack of transparency and stability may be problematic: it is difficult to predict the exact code generation result in ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
: Many modern code generation methods use tree pattern matching with dynamic programming. However, especially in the case of an irregular special-purpose processor architecture their lack of transparency and stability may be problematic: it is difficult to predict the exact code generation result in advance, and the effects of a modification in the code generation rules may be surprisingly wide. In contrast, macro expansion techniques are intuitively transparent. When global variables are disallowed, macro expansion typically has the Church-Rosser property: the final expansion result is independent of the expansion order of the individual intermediate macro calls. Besides enabling parallel implementation, order-independence means stability: the effects of modifying a macro definition are guaranteed to remain local. The locality is actually the problem with macro expansion; code optimization is improved when an assembly language macro is sensitive to its context. For instance, it should...
A Class Specific Optimizing Compiler
, 1993
"... Class specific optimizations are compiler optimizations specified by the class implementor to the compiler. hey allow the compiler to take advantage of the semantics of the particular class so as to produce better code. ptimizations of interest include the strength reduction of class::array address ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
Class specific optimizations are compiler optimizations specified by the class implementor to the compiler. hey allow the compiler to take advantage of the semantics of the particular class so as to produce better code. ptimizations of interest include the strength reduction of class::array address calculations, elimination of large temporaries, and the placement of asynchronous send/recv calls so as to achieve computation /communication overlap. e will outline our progress towards the implementation of a C compiler capable of incorporating class specific optimizations. ntro uction During the implementation of complex systems in C++, particularly numerical ones, the implementor typically encounters performance problems of varying difficulty. These difficulties usually relate to the lack of semantic understanding the C++ compiler has of the user defined classes. This problem was recently studied in [2] where the potential solution of class based optimizations was put forth. A class bas...

