Cmput680 winter 2006
Download
1 / 15

CMPUT680 - Winter 2006 - PowerPoint PPT Presentation


  • 81 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' CMPUT680 - Winter 2006' - molly-cervantes


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Cmput680 winter 2006

CMPUT680 - Winter 2006

Topic0: Introduction

José Nelson Amaral

http://www.cs.ualberta.ca/~amaral/courses/680

CMPUT 680 - Compiler Design and Optimization


Admin information

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
Some People You Want to be Friend With

Paul Berube

Kit Barton

Stephen

Curial

Zhuang

Guo

CMPUT 680 - Compiler Design and Optimization


Mailing list
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
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


Bibliography1
Bibliography

CMPUT 680 - Compiler Design and Optimization


Bibliography2

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


Bibliography3

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


Structure of an optimizing compiler

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


Phases of a compiler

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)


ad