Introduction to Advanced Topics Chapter 1 Text Book: Advanced compiler Design implementation By Steven S Muchnick (Elsevier)

Slides:



Advertisements
Similar presentations
Optimizing Compilers for Modern Architectures Syllabus Allen and Kennedy, Preface Optimizing Compilers for Modern Architectures.
Advertisements

Course Outline Traditional Static Program Analysis Software Testing
The University of Adelaide, School of Computer Science
Software & Services Group, Developer Products Division Copyright© 2010, Intel Corporation. All rights reserved. *Other brands and names are the property.
ECE 454 Computer Systems Programming Compiler and Optimization (I) Ding Yuan ECE Dept., University of Toronto
Chapter 10 Code Optimization. A main goal is to achieve a better performance Front End Code Gen Intermediate Code source Code target Code user Machine-
Control Flow Analysis (Chapter 7) Mooly Sagiv (with Contributions by Hanne Riis Nielson)
Introduction to Advanced Topics Chapter 1 Mooly Sagiv Schrierber
Code Generation Mooly Sagiv html:// Chapter 4.
Modern Compiler Internal Representations Silvius Rus 1/23/2002.
TM Pro64™: Performance Compilers For IA-64™ Jim Dehnert Principal Engineer 5 June 2000.
Introduction to Code Generation Mooly Sagiv html:// Chapter 4.
1 Intermediate representation Goals: –encode knowledge about the program –facilitate analysis –facilitate retargeting –facilitate optimization scanning.
Tentative Schedule 20/12 Interpreter+ Code Generation 27/12 Code Generation for Control Flow 3/1 Activation Records 10/1 Program Analysis 17/1 Register.
Introduction to Program Optimizations Chapter 11 Mooly Sagiv.
Reference Book: Modern Compiler Design by Grune, Bal, Jacobs and Langendoen Wiley 2000.
Case Studies of Compilers and Future Trends Chapter 21 Mooly Sagiv.
Data-Flow Analysis (Chapter 11-12) Mooly Sagiv Make-up class 18/ :00 Kaplun 324.
Hardware-Software Interface Machine Program Performance = t cyc x CPI x code size X Available resources statically fixed Designed to support wide variety.
From Cooper & Torczon1 Implications Must recognize legal (and illegal) programs Must generate correct code Must manage storage of all variables (and code)
The Structure of the GNAT Compiler. A target-independent Ada95 front-end for GCC Ada components C components SyntaxSemExpandgigiGCC AST Annotated AST.
Compiler Optimization Overview
1 Lecture 6: Compilers, the SPIM Simulator Today’s topics:  SPIM simulator  The compilation process Additional TA hours: Liqun Cheng, legion at.
LLVM Developed by University of Illinois at Urbana-Champaign CIS dept Cisc 471 Matthew Warner.
Procedure Optimizations and Interprocedural Analysis Chapter 15, 19 Mooly Sagiv.
CPSC 388 – Compiler Design and Construction Lecture: MWF 11:00am-12:20pm, Room 106 Colton.
Optimizing Compilers Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
C Chuen-Liang Chen, NTUCS&IE / 1 COMPILER Chuen-Liang Chen Department of Computer Science and Information Engineering National Taiwan University Taipei,
Natawut NupairojAssembly Language1 Introduction to Assembly Programming.
Compiler course 1. Introduction. Outline Scope of the course Disciplines involved in it Abstract view for a compiler Front-end and back-end tasks Modules.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
Computer architecture Lecture 11: Reduced Instruction Set Computers Piotr Bilski.
Activation Records (in Tiger) CS 471 October 24, 2007.
CS 671 Compilers Prof. Kim Hazelwood Spring 2008.
Synopsys University Courseware Copyright © 2012 Synopsys, Inc. All rights reserved. Compiler Optimization and Code Generation Lecture - 1 Developed By:
Lexical analyzer Parser Semantic analyzer Intermediate-code generator Optimizer Code Generator Postpass optimizer String of characters String of tokens.
U NIVERSITY OF D ELAWARE C OMPUTER & I NFORMATION S CIENCES D EPARTMENT Optimizing Compilers CISC 673 Spring 2009 Overview of Compilers and JikesRVM John.
Chapter 1 Introduction Study Goals: Master: the phases of a compiler Understand: what is a compiler Know: interpreter,compiler structure.
Introduction CPSC 388 Ellen Walker Hiram College.
Chapter 1 Introduction Major Data Structures in Compiler
ECEG-3202 Computer Architecture and Organization Chapter 7 Reduced Instruction Set Computers.
Compiler Introduction 1 Kavita Patel. Outlines 2  1.1 What Do Compilers Do?  1.2 The Structure of a Compiler  1.3 Compilation Process  1.4 Phases.
Compiler Optimizations ECE 454 Computer Systems Programming Topics: The Role of the Compiler Common Compiler (Automatic) Code Optimizations Cristiana Amza.
CS412/413 Introduction to Compilers and Translators April 2, 1999 Lecture 24: Introduction to Optimization.
Presented by : A best website designer company. Chapter 1 Introduction Prof Chung. 1.
Chapter 1 Introduction Samuel College of Computer Science & Technology Harbin Engineering University.
Compiler Summary Lexical analysis—scanner – String of characters  token – Finite automata. Syntactical analysis – parser – Sequence of tokens –> language.
CHAPTER 1 INTRODUCTION TO COMPILER SUNG-DONG KIM, DEPT. OF COMPUTER ENGINEERING, HANSUNG UNIVERSITY.
CS 404 Introduction to Compiler Design
Topics to be covered Instruction Execution Characteristics
Code Optimization Overview and Examples
Code Optimization.
Chapter 1 Introduction.
Introduction to Compiler Construction
Compiler Construction (CS-636)
CMPUT Compiler Design and Optimization
Overview of Compilation The Compiler BACK End
Chapter 1 Introduction.
课程名 编译原理 Compiling Techniques
Optimization Code Optimization ©SoftMoore Consulting.
Compiler Lecture 1 CS510.
Interprocedural Analysis Chapter 19
CMPE 152: Compiler Design December 5 Class Meeting
An Overview to Compiler Design
Optimizing Transformations Hal Perkins Autumn 2011
CSE401 Introduction to Compiler Construction
Overview of Compilation The Compiler BACK End
Compilers B V Sai Aravind (11CS10008).
Intermediate Code Generation
Lecture 4: Instruction Set Design/Pipelining
Presentation transcript:

Introduction to Advanced Topics Chapter 1 Text Book: Advanced compiler Design implementation By Steven S Muchnick (Elsevier)

Outline Review of compiler structure Advanced issues in elementary topics The importance of optimizations Structure of optimizing compilers Placement of optimizations Advanced topics

Compiler Structure String of characters Scanner tokens Parser Symbol table and access routines AST OS Interface Semantic analyzer IR Code Generator Object code

Advanced Issues in Elementary Topics Symbol table management(3) Efficiency Overloading Type Inference Intermediate Language Selection(4) Run-Time Support(5) Producing Code Generators (6)

Intermediate Language Selection Low Vs. High level control flow structures Flat Vs. Hierarchical (tree) Machine Vs. High level of instructions (Symbolic) Registers Vs. Stack Normal forms (SSA) Intermediate forms: Control Flow Graph, Call Graph, Program Dependence Graph Issues: Engineering, efficiency, portability, optimization level

IRs in the Book LIR MIR s2 s1 v v1 HIR s4  s3 t2  v2 L1: if s2 >s6 goto L2 s7  addr a s8  4*s9 s10  s7+s8 [s10]  2 s2  s2 + s4 goto L1 L2: MIR v v1 t2  v2 t3  v3 L1: if v >t3 goto L2 t4  addr a t5  4*i t6  t4+t5 *t6  2 v  v + t2 goto L1 L2: HIR for v v1 by v2 to v3 do a[i] :=2 endfor

Advanced Issues in Elementary Topics Symbol table management(3) Efficiency Overloading Type Inference Intermediate Language Selection(4) Run-Time Support(5) Producing Code Generators (6)

Run-Time Support Data representation and instructions Register usage Stack frames (activation records) Parameter passing disciplines Symbolic language support Garbage Collection

Advanced Issues in Elementary Topics Symbol table management(3) Efficiency Overloading Type Inference Intermediate Language Selection(4) Run-Time Support(5) Producing Code Generators (6)

The Importance of Optimizations One pass compilers produce slow code Much of the time spent in loops optimize loops Machines can be simpler and faster if optimizing compilers are used (RISC, VLIW) Programs are complex and general Compilers need to be modular

SPARC code C code ldw a, r1 ldw b, r2 add r1, r2, r3 Optimized stw r3, c ldw c, r3 add r3, 1, r4 stw r4, d Optimized SPARC code add r1, r2, r3 add r3, 1, r4 C code int a, b, c, d; c = a + b; d = c + 1; 2 cycles 10 cycles

Application Dependent Optimizations Functional programs replacement of recursion by loops (tail-calls elimination) replacement of heap by stack Object Oriented Programs Dead member elimination Replacement of virtual by static function Numeric Code Database Code

IR generator String Object Scanner Parser Semantic LIR generator Optimizer Fin. assembly Tokens AST LIR Object String Scanner Parser Semantic IR generator Optimizer Code generator Tokens AST MIR LIR Post. optimizer

Mixed vs. Low Level Optimizers Sun-SPARC, Dec. Alpha, SGI-MIPS, Intel’s 386 Easier to port More efficient compilation? Supports CISC Low Level HP-PA-RISC/IBM-Power PC More efficient code Conceptually simpler (in RISC) Used for multiple programming languages

Translation by Preprocessing Some programming languages are translated into C Elimination of includes, C++(cfront), Haskel Quick and portable solution C supports some indirect source level debugging Other examples: Fortran into “vector” Fortran program

Data-Cache Optimizations(20) String Scanner Tokens Parser AST Semantic HIR Data-cache optimizer MIR  Object

IBM PowerPC compiler String Scanner Tokens Parser AST Semantic Object Scanner Parser Semantic LIR generator Optimizer Fin. assembly Tokens AST LIR=XIL LIR Data-cache optimizer Low-to-High High-to-Low HIR=YIL

Outline Review of compiler structure Advanced issues in elementary topics The importance of optimizations Structure of optimizing compilers Placement of optimizations Advanced Topics

Scalar replacement of array references Data-cache optimizations Procedure integration Tail-call elimination Scalar replacement of aggregates Sparse constant propagation Interprocedural constant propagation Procedure specialization and cloning Sparse conditional constant propagation Inline expansion Leaf-routine optimizations Instruction Scheduling 1 Register allocation Instruction Scheduling 2 Intraprocedural I-cache optimizations Instruction prefetching Data prefertching Branch predication Global value numbering Local and global copy propagation Sparse conditional constant propagation Dead code elimination Common Subexpression Elimination Loop invariant code motion Interprocedural register allocation Interprocedural I-cache optimization Partial redundency Elimination