Download presentation
Presentation is loading. Please wait.
Published byHope Cain Modified over 9 years ago
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)
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.