Results 1 - 10
of
33
Designing the McCAT Compiler Based on a Family of Structured Intermediate Representations
- In Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing, number 757 in LNCS
, 1992
"... The effective exploitation of advanced technology for the development of the nextgeneration high-performance computers requires the integrated development of compiler techniques and architectural design. In order to provide a research tool with which we can experiment with both new architectural fea ..."
Abstract
-
Cited by 44 (16 self)
- Add to MetaCart
The effective exploitation of advanced technology for the development of the nextgeneration high-performance computers requires the integrated development of compiler techniques and architectural design. In order to provide a research tool with which we can experiment with both new architectural features and compiler support for those features, we have been developing the McGill Compiler /Architecture Testbed, McCAT. In this paper we focus on the design of the McCAT compiler. The central theme of the paper is that the design of the family of intermediate representations should be driven by the analyses and transformations that are most important for effective compilation for architectures supporting some level of fine-grain parallelism. A primary objective of our design was to provide a natural way of supporting a framework for alias analysis that is general (handles scalars, arrays and pointers), accurate (provides accurate enough estimates for parallelizing transformations) , and pe...
Taming Control Flow: A Structured Approach to Eliminating Goto Statements
- In Proceedings of 1994 IEEE International Conference on Computer Languages
, 1994
"... In designing optimizing and parallelizing compilers, it is often simpler and more efficient to deal with programs that have structured control flow. Although most programmers naturally program in a structured fashion, there remain many important programs and benchmarks that include some number of go ..."
Abstract
-
Cited by 41 (7 self)
- Add to MetaCart
In designing optimizing and parallelizing compilers, it is often simpler and more efficient to deal with programs that have structured control flow. Although most programmers naturally program in a structured fashion, there remain many important programs and benchmarks that include some number of goto statements, thus rendering the entire program unstructured. Such unstructured programs cannot be handled with compilers built with analyses and transformations for structured programs. In this paper we present a straight-forward algorithm to structure C programs by eliminating all goto statements. The method works directly on a highlevel abstract syntax tree (AST) representation of the program and could easily be integrated into any compiler that uses an AST-based intermediate representation. The actual algorithm proceeds by eliminating each goto by first applying a sequence of gotomovement transformations followed by the appropriate goto-elimination transformation. We have implemented...
Re-engineering needs Generic Programming Language Technology
- ACM SIGPLAN NOTICES
"... Generic language technology and compiler construction techniques are a prerequisite to build analysis and conversion tools that are needed for the re-engineering of large software systems. We argue that generic language technology is a crucial means to do fundamental re-engineering. Furthermore, we ..."
Abstract
-
Cited by 29 (14 self)
- Add to MetaCart
Generic language technology and compiler construction techniques are a prerequisite to build analysis and conversion tools that are needed for the re-engineering of large software systems. We argue that generic language technology is a crucial means to do fundamental re-engineering. Furthermore, we address the issue that the application of compiler construction techniques in re-engineering generates new research questions in the field of compiler construction.
A Complete Transformational Toolkit for Compilers
- ACM Transactions on Programming Languages and Systems
, 1996
"... . In an earlier paper, one of the present authors presented a preliminary account of an equational logic called PIM. PIM is intended to function as a "transformational toolkit" to be used by compilers and analysis tools for imperative languages, and has been applied to such problems as program sl ..."
Abstract
-
Cited by 21 (9 self)
- Add to MetaCart
. In an earlier paper, one of the present authors presented a preliminary account of an equational logic called PIM. PIM is intended to function as a "transformational toolkit" to be used by compilers and analysis tools for imperative languages, and has been applied to such problems as program slicing, symbolic evaluation, conditional constant propagation, and dependence analysis. PIM consists of the untyped lambda calculus extended with an algebraic rewriting system that characterizes the behavior of lazy stores and generalized conditionals. A major question left open in the earlier paper was whether there existed a complete equational axiomatization of PIM's semantics. In this paper, we answer this question in the affirmative for PIM's core algebraic component, PIM t , under the assumption of certain reasonable restrictions on term formation. We systematically derive the complete PIM logic as the culmination of a sequence of increasingly powerful equational systems starti...
Structuring Decompiled Graphs
- In Proceedings of the International Conference on Compiler Construction
, 1996
"... . A structuring algorithm for arbitrary control flow graphs is presented. Graphs are structured into functional, semantical and structural equivalent graphs, without code replication or introduction of new variables. The algorithm makes use of a set of generic high-level language structures that inc ..."
Abstract
-
Cited by 21 (6 self)
- Add to MetaCart
. A structuring algorithm for arbitrary control flow graphs is presented. Graphs are structured into functional, semantical and structural equivalent graphs, without code replication or introduction of new variables. The algorithm makes use of a set of generic high-level language structures that includes different types of loops and conditionals. Gotos are used only when the graph cannot be structured with the structures in the generic set. This algorithm is adequate for the control flow analysis required when decompiling programs, given that a pure binary program does not contain information on the high-level structures used by the initial high-level language program (i.e. before compilation). The algorithm has been implemented as part of the dcc decompiler, an i80286 decompiler of DOS binary programs, and has proved successful in its aim of structuring decompiled graphs. 1 Introduction A decompiler is a software tool that reverses the compilation process by translating a pure binar...
Making Graphs Reducible with Controlled Node Splitting
- ACM Trans. Programming Languages and Systems
, 1997
"... To exploit instruction level parallelism in programs over multiple basic blocks, programs should have reducible control flow graphs. However, not all programs satisfy this property. A new method, called Controlled Node Splitting (CNS), for transforming irreducible control flow graphs to reducible co ..."
Abstract
-
Cited by 13 (0 self)
- Add to MetaCart
To exploit instruction level parallelism in programs over multiple basic blocks, programs should have reducible control flow graphs. However, not all programs satisfy this property. A new method, called Controlled Node Splitting (CNS), for transforming irreducible control flow graphs to reducible control flow graphs is presented. CNS duplicates nodes of the control flow graph to obtain reducible control flow graphs. CNS results in a minimum number of splits and a minimum number of duplicates. Since the computation time to find the optimal split sequence is large, a heuristic has been developed. The results of this heuristic are close to the optimum. Straightforward application of node splitting resulted in an average code size increase of 235% per procedure of our benchmark programs. CNS with the heuristic limits this increase to only 3%. The impact on the total code size of the complete programs is for a straightforward application of node splitting 13.6%. When however CNS with the he...
Untangling unstructured cyclic flows - a solution based on continuations
- On the Move to Meaningful Internet Systems 2004: CoopIS, DOA, and ODBASE: OTM Confederated International Conferences, CoopIS, DOA, and ODBASE 2004, volume 3290 of Lecture Notes in Computer Science
, 2004
"... Abstract. We present a novel transformation method that allows us to map unstructured cyclic business process models to functionally equivalent workflow specifications that support structured cycles only. Our solution is based on a continuation semantics, which we developed for the graphical represe ..."
Abstract
-
Cited by 13 (2 self)
- Add to MetaCart
Abstract. We present a novel transformation method that allows us to map unstructured cyclic business process models to functionally equivalent workflow specifications that support structured cycles only. Our solution is based on a continuation semantics, which we developed for the graphical representation of a process model. By using a rule-based transformation method originally developed in compiler theory, we can untangle the unstructured flow while solving a set of abstract continuation equations. The generated workflow code can be optimized by controlling the order in which the transformation rules are applied. We then present an implementation of the transformation method that directly manipulates an object-oriented model of the Business Process Execution Language for Web Services BPEL4WS. The implementation maps abstract continuation equations to the BPEL4WS control-flow graph. The transformation rules manipulate the links in the graph such that all cycles are removed and replaced by equivalent structured activities. A byproduct of this work is that, if a continuation semantics is adopted for BPEL4WS, its restriction to acyclic links can be dropped. 1
A Generic Architecture for Data Flow Analysis to Support Reverse Engineering
- Theory and Practice of Algebraic Specifications; ASF+SDF'97, Electronic Workshops in Computing
, 1997
"... Data flow analysis is a process for collecting run-time information about data in programs without actually executing them. In this paper, we focus at the use of data flow analysis to support program understanding and reverse engineering. Data flow analysis is beneficial for these applications since ..."
Abstract
-
Cited by 9 (1 self)
- Add to MetaCart
Data flow analysis is a process for collecting run-time information about data in programs without actually executing them. In this paper, we focus at the use of data flow analysis to support program understanding and reverse engineering. Data flow analysis is beneficial for these applications since the information obtained can be used to compute relationships between data objects in programs. These relations play a key role, for example, in the determination of the logical components of a system and their interaction. The general support of program understanding and reverse engineering requires the ability to analyse a variety of source languages and the ability to combine the results of analysing multiple languages. We present a flexible and generic software architecture for describing and performing language-independent data flow analysis which allows such transparent multi-language analysis. All components of this architecture were formally specified. 1 Introduction Data flow anal...
From Business Process Models to Process-oriented Software Systems: The BPMN to BPEL Way ⋆
"... Abstract. Emerging methods for enterprise systems analysis rely on the representation of work practices in the form of business process models. A standard for representing such models is the Business Process Modeling Notation (BPMN). BPMN models are mainly intended for communication and decision-mak ..."
Abstract
-
Cited by 9 (0 self)
- Add to MetaCart
Abstract. Emerging methods for enterprise systems analysis rely on the representation of work practices in the form of business process models. A standard for representing such models is the Business Process Modeling Notation (BPMN). BPMN models are mainly intended for communication and decision-making between domain analysts, but often they are also given as input to software development projects. Meanwhile, development methods for process-oriented systems rely on detailed process definitions that are executed by process engines. These process definitions refine BPMN models by adding data manipulation, application binding and other implementation details. A major standard for process implementation is the Business Process Execution Language for Web Services (BPEL4WS, or BPEL for short). Accordingly, a natural method for end-to-end development of process-oriented systems is to translate BPMN models to BPEL definitions for subsequent refinement. However, instrumenting this method is challenging because BPEL imposes far more syntactic restrictions than BPMN so as to ensure correctness. Existing techniques for translating BPMN to BPEL only work for limited classes of BPMN models. This paper proposes techniques that overcome these limitations. Beyond its direct relevance in the context of BPMN and BPEL, the techniques presented in this paper address issues that arise generally when translating from graphical/unstructured to textual/structured (i.e. more programming-like) languages. 1
Compiling Business Processes: Untangle Unstructured Loops in Irreducible Flow Graphs
, 2005
"... The evolution of programming languages (from machine languages, to assembly languages, high-level languages, and modeling languages) provides the technical foundation for the transition from machine-centric development to domaincentric ..."
Abstract
-
Cited by 8 (2 self)
- Add to MetaCart
The evolution of programming languages (from machine languages, to assembly languages, high-level languages, and modeling languages) provides the technical foundation for the transition from machine-centric development to domaincentric

