Cmput680 winter 2006
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

CMPUT680 - Winter 2006 PowerPoint PPT Presentation


  • 37 Views
  • Uploaded on
  • Presentation posted in: General

CMPUT680 - Winter 2006. Topic0: Introduction José Nelson Amaral http://www.cs.ualberta.ca/~amaral/courses/680. Instructor:Prof. Jose Nelson Amaral OfficeATH 342 Phone 492-5411 Office Hours:Anytime (appointment suggested but not required) email:[email protected]

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

OfficeATH 342

Phone 492-5411

Office Hours:Anytime (appointment suggested but not required)

email:[email protected]

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

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

CMPUT 680 - Compiler Design and Optimization


Bibliography3

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

CMPUT 680 - Compiler Design and Optimization


Cmput680 winter 2006

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


Cmput680 winter 2006

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)


Cmput680 winter 2006

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)


Cmput680 winter 2006

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)


Cmput680 winter 2006

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)


  • Login