Title: CMPUT680 - Winter 2006
1CMPUT680 - Winter 2006
- Topic0 Introduction
- José Nelson Amaral
- http//www.cs.ualberta.ca/amaral/courses/680
2Admin. Information
- Instructor Prof. Jose Nelson Amaral
- Office ATH 342
- Phone 492-5411
- Office Hours Anytime (appointment
suggested but not required) - email amaral_at_cs.ualberta.ca
- webpage
- http//www.cs.ualberta.ca/amaral/courses/680
3Some People You Want to be Friend With
Kit Barton
Paul Berube
Stephen Curial
Zhuang Guo
4Mailing 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.
5Bibliography
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
6Bibliography
7Bibliography
- 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
8Bibliography
- 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
9Compiler Development Test Cycle
Resident Compiler
Development Compiler Source Code
Development Compiler
Application Source Code
Application Output Verifier
Expected Application Output
Compiled Application
Application Output
Application Input
10Structure of an Optimizing Compiler
source code
11Phases of a Compiler
Source program
12Low-level Model
Mixed-level Model
Two models of compiler structures (Muchnick, pp.
08)
132. 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
20. Pipelining, Scheduling
15. Functional Languages
16. Polymorphic Types
21. Memory Hierarchies
13. Garbage Collection
14. Object-Oriented Languages
Course Teaching Sequence
(Appel, pp. x)
142. 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
20. Pipelining, Scheduling
15. Functional Languages
16. Polymorphic Types
21. Memory Hierarchies
13. Garbage Collection
14. Object-Oriented Languages
Course Teaching Sequence
(Appel, pp. x)
15Environ- ments
Tables
Parsing Actions
Semantic Analysis
Canon- icalize
Instruction Selection
Abstract Syntax
Source Program
Token
Reductions
Translate
IR Trees
IR Trees
Assem
Lex
Parse
Translate
Frame
Frame Layout
Control Flow Analysis
Data Flow Analysis
Relocatable Object Code
Register Allocation
Code Emission
Machine Language
Interference Graph
Register Assignment
Assembly Language
Assembler
Assem
Flow Graph
Linker
Phases of a compiler, and interfaces between them
(Appel, pp. 4)