Presentation is loading. Please wait.

Presentation is loading. Please wait.

CMPUT 680 - Compiler Design and Optimization1 CMPUT680 - Winter 2006 Topic0: Introduction José Nelson Amaral

Similar presentations


Presentation on theme: "CMPUT 680 - Compiler Design and Optimization1 CMPUT680 - Winter 2006 Topic0: Introduction José Nelson Amaral"— Presentation transcript:

1 CMPUT 680 - Compiler Design and Optimization1 CMPUT680 - Winter 2006 Topic0: Introduction José Nelson Amaral http://www.cs.ualberta.ca/~amaral/courses/680

2 CMPUT 680 - Compiler Design and Optimization2 Instructor:Prof. Jose Nelson Amaral OfficeATH 342 Phone 492-5411 Office Hours:Anytime (appointment suggested but not required) email:amaral@cs.ualberta.ca webpage: http://www.cs.ualberta.ca/~amaral/courses/680 Admin. Information

3 CMPUT 680 - Compiler Design and Optimization3 Some People You Want to be Friend With Kit BartonPaul Berube Stephen Curial Zhuang Guo

4 CMPUT 680 - Compiler Design and Optimization4 Mailing List Important announcements will be made through the class mailing list (some only in the list). I have created an alias for the students in CMPUT 680. If you have not received an email from me, please send me an email.

5 CMPUT 680 - Compiler Design and Optimization5 Bibliography 1. A set of papers - to be assigned 2. Books: Randy Allen, Ken Kennedy, Optimizing Compilers for Modern Architectures: A Dependence-based Approach, Morgan Kauffman, 2001. Andrew W. Appel : Modern Compiler Implementation in C A. Aho, R. Sethi and J. Ullman, Compilers: Principles, Techniques and Tools (The Dragon Book), Addison Wesley, 1988 M. Wolfe, High Performance Compilers of Parallel Computing, Addison Wesley, 1995 S. Muchnick, Advanced Compiler Design and Implementation, Morgan Kaufman, 1997

6 CMPUT 680 - Compiler Design and Optimization6 Bibliography

7 CMPUT 680 - Compiler Design and Optimization7 3. Journals IEEEComputer Transactions on Computers Concurrency Transactions on Parallel and Distributed Systems ACMTOPLAS - Transactions on Programming Languages and Systems Transaction on Computer Systems JPDCJournal of Parallel and Distributed computing JSCJournal of Supercomputing JPPInternational Journal of Parallel Programming PCParallel Computing (North-Holland) JPLJ. of Programming Languages Bibliography

8 CMPUT 680 - Compiler Design and Optimization8 4. Conference Proceedings PLDIACM Symposium on Programming Language Design and Implementation POPLACM Symposium on Principles of Programming Languages PPOPPACM Symposium on Principles and Practice of Parallel Programming ICPPInternational Conference on Parallel Processing ICSInternational Conference on Supercomputing LCPCIntern. WS. on Languages and Compilers for Parallel Computing PACTParallel Architectures and Compilation Techniques (since 1994) IPPSInternational Parallel Processing Symposium EUROPAREuropean Parallel Processing Conferences MICRO ACM/IEEE Symposium on Microarchitectures ISCAACM/IEEE International Symposium on Computer Architecture ASPLOSACM Symposium on Architecture Support for Program Languages and Operating Systems Bibliography

9 Development Compiler Source Code Application Source Code Expected Application Output Application Output Resident Compiler Development Compiler Compiled Application Output Verifier Application Input Compiler Development Test Cycle

10 CMPUT 680 - Compiler Design and Optimization10 Structure of an Optimizing Compiler source code intermediate code compiler front-end machine code loop optimization register allocation code generation code scheduling

11 CMPUT 680 - Compiler Design and Optimization11 Phases of a Compiler Source program Lexical Analyzer (Scanner) Tokens Syntax Analyzer (Parser) Parse tree Semantic Analyzer Abstract Syntax Tree w/ Attributes Intermediate-code Optimizer Optimized Intermediate Code Target-code Generator Target machine code Intermediate-code Generator Non-optimized Intermediate Code

12 Lexical analyzer String of characters String of tokens Parser Parse tree Semantic analyzer Abstract syntax tree Translator Low-level intermediate code Optimizer Low-level intermediate code Final assembly Relocatable object module or runnable machine code Lexical analyzer String of characters String of tokens Parser Parse tree Semantic analyzer Abstract Syntax tree Intermediate-code generator Medium-level intermediate code Optimizer Medium-level intermediate code Code generator Low-level intermediate code Postpass optimizer Relocatable object module or runnable machine code Two models of compiler structures (Muchnick, pp. 08) Low-level ModelMixed-level Model

13 1. Introduction 2. Lexical Analysis 3. Parsing 4. Abstract Syntax 5. Semantic Analysis 6. Activation Records 7. Translation to Intermediate Code 8. Basic Blocks and traces 9. Instruction Selection 12. Putting it All Together 10. Liveness Analysis 11. Register Allocation 17. Dataflow Analysis 18. Loop Optimizations 19. Static Single- Assignment Form 20. Pipelining, Scheduling 21. Memory Hierarchies 15. Functional Languages 13. Garbage Collection 16. Polymorphic Types 14. Object-Oriented Languages Course Teaching Sequence (Appel, pp. x)

14 1. Introduction 2. Lexical Analysis 3. Parsing 4. Abstract Syntax 5. Semantic Analysis 6. Activation Records 7. Translation to Intermediate Code 8. Basic Blocks and traces 9. Instruction Selection 12. Putting it All Together 10. Liveness Analysis 11. Register Allocation 17. Dataflow Analysis 18. Loop Optimizations 19. Static Single- Assignment Form 20. Pipelining, Scheduling 21. Memory Hierarchies 15. Functional Languages 13. Garbage Collection 16. Polymorphic Types 14. Object-Oriented Languages Course Teaching Sequence (Appel, pp. x)

15 Lex Source Program Parse Token Parsing Actions Reductions Semantic Analysis Abstract Syntax Tables Environ- ments Translate Frame Layout Canon- icalize IR Trees Instruction Selection IR Trees Register Allocation Interference Graph Code Emission Register Assignment Assembler Assembly Language Linker Relocatable Object Code Machine Language Control Flow Analysis Assem Data Flow Analysis Flow Graph Assem Phases of a compiler, and interfaces between them (Appel, pp. 4)


Download ppt "CMPUT 680 - Compiler Design and Optimization1 CMPUT680 - Winter 2006 Topic0: Introduction José Nelson Amaral"

Similar presentations


Ads by Google