| C.W. Fraser, D.R. Hanson, T.A. Proebsting: Engineering a Simple, Efficient Code Generator Generator. ACM Letters on Prog. Lang. and Systems 1:3 (1993) 213-- 226 |
....performs code generation for RISC architectures. Here, a simple approach for code selection is chosen. A recursivedescent brute force tree pattern matcher neither considers graph structure of the intermediate code nor global subexpressions. Our implementation is based on the work of Fraser et al. [13, 14]. Points of major differences between our code selection approach and similar tasks in classic code generation (CG) are: Complexity of datapaths. CBC has to deal with highly specialized and optimized datapaths. The hardware units make the efficient execution of frequently used operation ....
....the nML front end simply generates multiple patterns (in this case, s = add(t,i2) is replaced by s = add(i2,t) In the context of our compiler, the term rewrite system is not one monolithic unit; pattern matching and rewriting are separated phases. The tree parser generator we use, Iburg [14], is only concerned with the matching phase; the connection to the rewrite phase is made by match rule numbers. The tree grammar (from which the tree parser is generated) and the rewrite procedure are both generated by our chaining preprocessor, which takes the rewrite rules as MATCH i1 = reg; ....
C.W. Fraser, D.R. Hanson, T.A. Proebsting: Engineering a Simple, Efficient Code Generator Generator. ACM Letters on Prog. Lang. and Systems 1:3 (1993) 213-- 226
.... of source program efficiently and its manipulation is considered easy [14] Since the development of tree pattern matching by Hoffman and O Donnell [5] the tree pattern matching with dynamic programming (DP) has been accepted as a practical technique for CG and a code generator generator (CGG) [1, 2, 4, 6, 7, 10, 13, 14]. The input to the CGG which is actually the machine specification contains the tree rewrite system which consists of rewrite rules. Each rewrite rule has a cost associated with its semantic action. The bottom up tree pattern matching scheme is theoretically much faster than any other tree pattern ....
....Rewrite System (BURS) is efficient because that executes DP technique at compile compile time [10, 14] However, BURS has the restriction that the costs used in the tree rewrite system must be constant. The matching scheme adapting DP technique at compilation time allows the arbitrary cost values [6], which may cause inefficiency at compilation time. In this paper, we dealt the bottom up tree pattern matching scheme that allows the arbitrary cost values [6] We emphasize the efficiency of the scheme and the size of CG in dealing the bottom up tree pattern matching scheme which allows the ....
[Article contains additional citation context not shown here]
C. W. Fraser, D. R. Hanson and T. A. Proebsting, Engineering a Simple, Efficient Code Generator Generator, ACM Lett. Prog. Lang. Syst. 6:331-340, 1992.
....instruction set. Tree covering then proceeds by dynamic programming. The instructions are modelled as tree patterns, and an optimal cover (including pure data transport operations) is computed, under the assumption that no ILP is available. In our case we use the iburg pattern matcher generator [8]. iburg takes as input a tree grammar describing the available RT patterns on a processor and (similar to yacc) produces C source code for a fast, processor specific tree pattern matcher. As proposed in [4] we include register specific patterns into the tree grammar, in order to integrate ....
C. W. Fraser, D. R. Hanson, T. A. Proebsting: Engineering a Simple, Efficient Code Generator Generator, Journal of the ACM, 22(12), 1993, pp. 248-262
.... optimization tagging untagging specification instruction flowgraph target Phi BURG MLRISC Psi BURG CPS ctrees simplify optimize machine description m c Fig. 1. Flowchart of new code generation model 3 ML Burg The new code generation strategy is implemented using a SML version of iBurg[10, 13]. Given a tree rewriting system augmented with costs, ML Burg generates a program to perform bottom up tree pattern matching with dynamic programming. A successful reduction of the input tree, corresponds to rewriting the input tree to a special non terminal symbol called the start non terminal. ....
Fraser, C., Hanson, D., and Proebsting, T. Engineering a simple, efficient code generator generator. In Letters on Programming Languages and Systems (1992), ACM.
....2458 1942 2390 1678 1360 1117 1182 1029 Table I: Improvements Table II shows the comparison between the CGs on the code size of CGs and the elapsed time of compiler. The code is the binary code for the CG. The times are the lowest elapsed times over several runs on a lightly loaded machine like [6]. The columns of name old and new are respectively the result of the CG generated from iburg and the result of the CG modified. The test suite is cq.c which is the largest program(5317 lines) in the test suites. x86 m68k sparc mips old new old new old new old new Code size(byte) 171808 ....
C. W. Fraser, D. R. Hanson, T. A. Proebsting, Engineering a Simple, Efficient Code Generator Generator, ACM Lett. Prog. Lang. Syst. 6:331-340, 1992.
....towards fixing deficiencies in the code generated by our specific code generator. The code generator is pretty intricate, as there are lots of special cases to consider when one tries to generate good code for a realistic machine such as the SPARC. Perhaps a code generator generator such as iBurg [8] could be used clean this up. 6 Overview The action compiler and compiler generator consists of many parts written in different languages 3 . This section gives an overview of the different parts and their interaction. The compiler generator (gencomp) takes an action semantics written as a ....
C. W. Fraser, D. R. Hanson, and T. A. Proebsting. Engineering a Simple, Efficient Code Generator Generator. Technical report, AT&T Bell Labs, 1992.
....a machine independent assembly language. This IR then gets converted into MIPS assembly code in one compiler, C code in the other. I am considering ways to incorporate more sophisticated code generation methods into this framework, such as tree pattern matching with dynamic programming [8]. 4 Inner Workings 4.1 Reflection Extensibility presents some interesting design challenges. The generic classes in the framework, without any modifications made to them, must be able to divine all the information and actions contained in their subclasses, subclasses that didn t exist when the ....
C. W. Fraser, D. R. Hanson, and T. A. Proebsting. Engineering a Simple, Efficient Code Generator Generator. ACM LOPLAS. 1(3):213-- 226, 1992.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC