1 / 15

CMPUT680 - Winter 2006

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

Download Presentation

CMPUT680 - Winter 2006

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. Some People You Want to be Friend With Paul Berube Kit Barton Stephen Curial Zhuang Guo CMPUT 680 - Compiler Design and Optimization

  4. 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

  5. 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

  6. Bibliography CMPUT 680 - Compiler Design and Optimization

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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)

  13. 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)

  14. 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)

  15. 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)

More Related