150 likes | 265 Views
CMPUT680 - Winter 2006. Topic0: Introduction José Nelson Amaral http://www.cs.ualberta.ca/~amaral/courses/680. Instructor: Prof. Jose Nelson Amaral Office ATH 342 Phone 492-5411 Office Hours: Anytime (appointment suggested but not required) email: amaral@cs.ualberta.ca
E N D
CMPUT680 - Winter 2006 Topic0: Introduction José Nelson Amaral http://www.cs.ualberta.ca/~amaral/courses/680 CMPUT 680 - Compiler Design and Optimization
Instructor: Prof. Jose Nelson Amaral Office ATH 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 CMPUT 680 - Compiler Design and Optimization
Some People You Want to be Friend With Paul Berube Kit Barton Stephen Curial Zhuang Guo CMPUT 680 - Compiler Design and Optimization
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. CMPUT 680 - Compiler Design and Optimization
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 CMPUT 680 - Compiler Design and Optimization
Bibliography CMPUT 680 - Compiler Design and Optimization
3. Journals IEEE Computer Transactions on Computers Concurrency Transactions on Parallel and Distributed Systems ACM TOPLAS - Transactions on Programming Languages and Systems Transaction on Computer Systems JPDC Journal of Parallel and Distributed computing JSC Journal of Supercomputing JPP International Journal of Parallel Programming PC Parallel Computing (North-Holland) JPL J. of Programming Languages Bibliography CMPUT 680 - Compiler Design and Optimization
4. Conference Proceedings PLDI ACM Symposium on Programming Language Design and Implementation POPL ACM Symposium on Principles of Programming Languages PPOPP ACM Symposium on Principles and Practice of Parallel Programming ICPP International Conference on Parallel Processing ICS International Conference on Supercomputing LCPC Intern. WS. on Languages and Compilers for Parallel Computing PACT Parallel Architectures and Compilation Techniques (since 1994) IPPS International Parallel Processing Symposium EUROPAR European Parallel Processing Conferences MICRO ACM/IEEE Symposium on Microarchitectures ISCA ACM/IEEE International Symposium on Computer Architecture ASPLOS ACM Symposium on Architecture Support for Program Languages and Operating Systems Bibliography CMPUT 680 - Compiler Design and Optimization
Compiler Development Test Cycle Resident Compiler Development Compiler Source Code Development Compiler Application Output Verifier Application Source Code Expected Application Output Compiled Application Application Output Application Input
compiler front-end intermediate code loop optimization register allocation code generation code scheduling machine code Structure of an Optimizing Compiler source code CMPUT 680 - Compiler Design and Optimization
Intermediate-code Generator Lexical Analyzer (Scanner) Non-optimized Intermediate Code Tokens Intermediate-code Optimizer Syntax Analyzer (Parser) Optimized Intermediate Code Parsetree Target-code Generator Semantic Analyzer Abstract Syntax Tree w/ Attributes Target machine code Phases of a Compiler Source program CMPUT 680 - Compiler Design and Optimization
String of characters Lexical analyzer String of characters Lexical analyzer String of tokens String of tokens Parser Parse tree Parser Semantic analyzer Parse tree Semantic analyzer Abstract Syntax tree Intermediate-code generator Abstract syntax tree Translator Medium-level intermediate code Low-level intermediate code Optimizer Optimizer Medium-level intermediate code Low-level intermediate code Code generator Final assembly Low-level intermediate code Postpass optimizer Relocatable object module or runnable machine code Relocatable object module or runnable machine code Low-level Model Mixed-level Model Two models of compiler structures (Muchnick, pp. 08)
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 1. Introduction 10. Liveness Analysis 11. Register Allocation 17. Dataflow Analysis 18. Loop Optimizations 19. Static Single- Assignment Form 15. Functional Languages 16. Polymorphic Types 20. Pipelining, Scheduling 13. Garbage Collection 14. Object-Oriented Languages 21. Memory Hierarchies Course Teaching Sequence (Appel, pp. x)
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 1. Introduction 10. Liveness Analysis 11. Register Allocation 17. Dataflow Analysis 18. Loop Optimizations 19. Static Single- Assignment Form 15. Functional Languages 16. Polymorphic Types 20. Pipelining, Scheduling 13. Garbage Collection 14. Object-Oriented Languages 21. Memory Hierarchies Course Teaching Sequence (Appel, pp. x)
Environ- ments Tables Parsing Actions Semantic Analysis Canon- icalize Instruction Selection Abstract Syntax Reductions Source Program Token IR Trees IR Trees Translate Assem Lex Parse Translate Frame Frame Layout Control Flow Analysis Data Flow Analysis Relocatable Object Code Register Allocation Code Emission Machine Language Register Assignment Assembly Language Interference Graph Assembler Flow Graph Assem Linker Phases of a compiler, and interfaces between them (Appel, pp. 4)