Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS 671 Compilers Prof. Kim Hazelwood Spring 2008.

Similar presentations


Presentation on theme: "CS 671 Compilers Prof. Kim Hazelwood Spring 2008."— Presentation transcript:

1 CS 671 Compilers Prof. Kim Hazelwood Spring 2008

2 CS 671 – Spring 2008 1 What is a Compiler? Compiler High-Level Programming Languages Machine Code Error Messages Then What? Machine Code Program Inputs Program Outputs

3 CS 671 – Spring 2008 2 What is an Interpreter? Interpreter Source Code Program Outputs Program Inputs

4 CS 671 – Spring 2008 3 What is a Just-in-Time Compiler? IR Generator Source Code Program Outputs Program Inputs Virtual Machine Intermediate Program

5 CS 671 – Spring 2008 4 Why Study Compilers? Fundamental tool in computer science since 1952 Remains a vibrant research topic Machines keep changing Languages keep changing Applications keep changing When to compile keeps changing Challenging! Must correctly handle an infinite set of legal programs Is itself a large program → “Where theory meets practice”

6 CS 671 – Spring 2008 5 Goals of a Compiler A compiler’s job is to Lower the abstraction level Eliminate overhead from language abstractions Map source program onto hardware efficiently –Hide hardware weaknesses, utilize hardware strengths Equal the efficiency of a good assembly programmer Optimizing compilers should improve the code Performance* Code size Security Reliability Power consumption

7 CS 671 – Spring 2008 6 An Interface to High-Level Languages Programmers write in high-level languages Increases productivity Easier to maintain/debug More portable HLLs also protect the programmer from low- level details Registers and caches – the register keyword Instruction selection Instruction-level parallelism The catch: HLLs are less efficient Compiler High-Level Programming Languages Machine Code

8 CS 671 – Spring 2008 7 High-Level Languages and Features C (80’s) … C++ (Early 90’s) … Java (Late 90’s) Each language had features that spawned new research C/Fortran/COBOL User-defined aggregate data types (arrays, structures) Control-flow and procedures Prompted data-flow optimizations C++/Simula/Modula II/Smalltalk Object orientation (more, smaller procedures) Prompted inlining Java Type safety, bounds checking, garbage collection Prompted bounds removal, dynamic optimization

9 CS 671 – Spring 2008 8 An Interface to Computer Architectures Parallelism Instruction level –multiple operations at once –want to minimize dependences Processor level –multiple threads at once –want to minimize synchronization Memory Hierarchies Register allocation (only portion explicitly managed in SW) Code and data layout (helps the hardware cache manager) Designs driven by how well compilers can leverage new features! Compiler High-Level Programming Languages Machine Code

10 CS 671 – Spring 2008 9 How Can We Translate Effectively? ? High-Level Source Code Low-Level Machine Code

11 CS 671 – Spring 2008 10 Idea: Translate in Steps Series of program representations Intermediate representations optimized for various manipulations (checking, optimization) More machine specific, less language specific as translation proceeds

12 CS 671 – Spring 2008 11 Simplified Compiler Structure Lexical Analysis Parsing Intermediate Code Generation Optimization Source code (character stream) if (b==0) a = b; Assembly code (character stream) CMP CX, 0 CMOVZ CX, DX Token stream Abstract syntax tree Intermediate code Front End Back End Machine dependent Machine independent Register Allocation LIR

13 CS 671 – Spring 2008 12 Why Separate the Front and Back Ends? Recall: An interface between HLLs and architectures Option: X*Y compilers or X-front ends + Y-back ends Compiler Hello alpha Hello x86 Hello sparc hello.c hello.f hello.cc hello.ada X FEs Y BEs Front End Hello alpha Hello x86 Hello sparc hello.c hello.f hello.cc hello.ada Back End IR

14 CS 671 – Spring 2008 13 Internal Compiler Structure –Front End Series of filter passes Source program – Written in a HLL Lexical analysis – Convert keywords into “tokens” Parser – Forms a syntax “tree” (statements, expressions, etc.) Semantic analysis – Type checking, etc. Intermediate code generator – Three-address code, interface for back end Lexical Analyzer Parser Semantic Analyzer Source Program Token Stream Syntax Tree Intermediate Code Gen IR

15 CS 671 – Spring 2008 14 Internal Compiler Structure –Back End Code optimization – “improves” the intermediate code (most time is spent here) Consists of machine independent & dependent optimizations Code generation Register allocation, instruction selection Code Optimizer Code Generator IR Target program

16 CS 671 – Spring 2008 15 GCC Demo

17 CS 671 – Spring 2008 16 Traditional Compiler Infrastructures GNU GCC Targets: everything (pretty much) Strength: Targets everything (pretty much) Weakness: Not as extensible as research infrastructures, poor optimization Stanford SUIF Compiler with Harvard MachSUIF Targets: Alpha, x86, IPF, C Strength: high level analysis, parallelization on scientific codes Intel Open Research Compiler (ORC) Targets: IPF Strength: robust with OK code quality Weakness: Many IR levels

18 CS 671 – Spring 2008 17 Modern Compiler Infrastructures IBM Jikes RVM Targets Linux, x86 or AIX Strengths: Open-source, wide user base Weaknesses: In maintenance mode Microsoft Phoenix Targets Windows Strengths: Actively developed Weaknesses: Closed source, extensive API

19 CS 671 – Spring 2008 18 What will we learn in this course? Structure of Compilers The Front End The Back End Advanced Topics –Just-in-time compilation –Dynamic optimization –Power and size optimizations

20 CS 671 – Spring 2008 19 Required Work Two Non-Cumulative Exams (15% each) –February 21 and April 10 Homework (30%) –About 4 assignments –Some are pencil/paper; some are implementation-based Semester Project (40%) –Groups of 2 –Staged submission –proposal 30% –report 55% –presentation 15% Late Policy 2 ^ (days late) points off (where days late > 0)

21 CS 671 – Spring 2008 20 Course Materials We will use the Dragon book Course Website –www.cs.virginia.edu/kim/courses/cs671/ Lecture Slides –On the course website –I will try to post them before class –Attending class is in your best interest Other Helpful Books

22 CS 671 – Spring 2008 21 Next Time… Read Dragon Chapter 1 We will begin discussing lexical analysis Look out for HW1


Download ppt "CS 671 Compilers Prof. Kim Hazelwood Spring 2008."

Similar presentations


Ads by Google