An Overview of Compilation
|
|
- Clifford Rose
- 5 years ago
- Views:
Transcription
1 An Overview of Compilation ( uday) Department of Computer Science and Engineering, Indian Institute of Technology, Bombay January 2014
2 cs306 Compilation Overview: Outline 1/18 Outline Introduction compilation sequence compilation models
3 Part 1 Introduction to Compilation
4 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding Nothing is known except the problem No.of unbound objects Time
5 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding Overall strategy, algorithm, data structures etc. No.of unbound objects Conceptualisation Time
6 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding No.of unbound objects Functions, variables, their types etc. Conceptualisation Coding Time
7 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding No.of unbound objects Machine instructions, registers etc. Conceptualisation Coding Compiling Time
8 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding No.of unbound objects Addresses of functions, external data etc. Conceptualisation Coding Compiling Linking Time
9 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding No.of unbound objects Actual addresses of code and data Conceptualisation Coding Compiling Linking Loading Time
10 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding No.of unbound objects Values of variables Conceptualisation Coding Compiling Linking Loading Execution Time
11 cs306 Compilation Overview: Introduction to Compilation 2/18 Binding No.of unbound objects We will look at different binding times related to compiling Conceptualisation Coding Compiling Linking Loading Execution Time
12 cs306 Compilation Overview: Introduction to Compilation 3/18 Implementation Mechanisms Source Program Translator Target Program Machine
13 cs306 Compilation Overview: Introduction to Compilation 3/18 Implementation Mechanisms Source Program Translator Input Data Target Program Machine
14 cs306 Compilation Overview: Introduction to Compilation 3/18 Implementation Mechanisms Source Program Input Data Source Program Translator Target Program Machine Interpreter Machine
15 cs306 Compilation Overview: Introduction to Compilation 4/18 Implementation Mechanisms as Bridges Gap between the levels of program specification and execution Program Specification Machine
16 cs306 Compilation Overview: Introduction to Compilation 4/18 Implementation Mechanisms as Bridges Gap between the levels of program specification and execution Program Specification Translation Machine
17 cs306 Compilation Overview: Introduction to Compilation 4/18 Implementation Mechanisms as Bridges Gap between the levels of program specification and execution Program Specification Translation Interpretation Machine
18 cs306 Compilation Overview: Introduction to Compilation 4/18 Implementation Mechanisms as Bridges Gap between the levels of program specification and execution Program Specification State : Variables Operations: Expressions, Control Flow Translation Interpretation Machine State : Memory, Registers Operations: Machine Instructions
19 cs306 Compilation Overview: Introduction to Compilation 5/18 High and Low Level Abstractions Input C statement a = b<10?b:c; Spim Assembly Equivalent lw $t0, 4($fp) ; t0 <- b # Is b smaller slti $t0, $t0, 10 ; t0 <- t0 < 10 # than 10? not $t0, $t0 ; t0 <-!t0 bgtz $t0, L0: ; if t0>0 goto L0 lw $t0, 4($fp) ; t0 <- b # YES b L1: ; goto L1 L0: lw $t0, 8($fp) ;L0: t0 <- c # NO L1: sw 0($fp), $t0 ;L1: a <- t0
20 cs306 Compilation Overview: Introduction to Compilation 5/18 High and Low Level Abstractions Input C statement a = b<10?b:c; Spim Assembly Equivalent Conditional jump Condition False Part True Part Fall through lw $t0, 4($fp) ; t0 <- b # Is b smaller slti $t0, $t0, 10 ; t0 <- t0 < 10 # than 10? not $t0, $t0 ; t0 <-!t0 bgtz $t0, L0: ; if t0>0 goto L0 lw $t0, 4($fp) ; t0 <- b # YES b L1: ; goto L1 L0: lw $t0, 8($fp) ;L0: t0 <- c # NO L1: sw 0($fp), $t0 ;L1: a <- t0
21 cs306 Compilation Overview: Introduction to Compilation 5/18 High and Low Level Abstractions NOT Condition Input C statement a = b<10?b:c; Spim Assembly Equivalent True Part False Part lw $t0, 4($fp) ; t0 <- b # Is b smaller slti $t0, $t0, 10 ; t0 <- t0 < 10 # than 10? not $t0, $t0 ; t0 <-!t0 bgtz $t0, L0: ; if t0>0 goto L0 lw $t0, 4($fp) ; t0 <- b # YES b L1: ; goto L1 L0: lw $t0, 8($fp) ;L0: t0 <- c # NO L1: sw 0($fp), $t0 ;L1: a <- t0
22 cs306 Compilation Overview: Introduction to Compilation 5/18 High and Low Level Abstractions Input C statement a = b<10?b:c; Spim Assembly Equivalent Conditional jump NOT Condition True Part False Part Fall through lw $t0, 4($fp) ; t0 <- b # Is b smaller slti $t0, $t0, 10 ; t0 <- t0 < 10 # than 10? not $t0, $t0 ; t0 <-!t0 bgtz $t0, L0: ; if t0>0 goto L0 lw $t0, 4($fp) ; t0 <- b # YES b L1: ; goto L1 L0: lw $t0, 8($fp) ;L0: t0 <- c # NO L1: sw 0($fp), $t0 ;L1: a <- t0
23 cs306 Compilation Overview: Introduction to Compilation 6/18 Implementation Mechanisms Translation = Analysis + Synthesis Interpretation = Analysis + Execution
24 cs306 Compilation Overview: Introduction to Compilation 6/18 Implementation Mechanisms Translation = Analysis + Synthesis Interpretation = Analysis + Execution Translation Instructions Equivalent Instructions
25 cs306 Compilation Overview: Introduction to Compilation 6/18 Implementation Mechanisms Translation = Analysis + Synthesis Interpretation = Analysis + Execution Translation Instructions Equivalent Instructions Interpretation Instructions Actions Implied by Instructions
26 cs306 Compilation Overview: Introduction to Compilation 7/18 Language Implementation Models Synthesis Compilation Analysis Execution Interpretation
27 cs306 Compilation Overview: Introduction to Compilation 8/18 Language Processor Models Front End Optimizer Back End Virtual Machine C,C++ Java, C#
28 Part 2 An Overview of Compilation Phases
29 cs306 Compilation Overview: An Overview of Compilation Phases 9/18 The Structure of a Simple Compiler Parser Scanner Source Program Semantic Analyser Symtab Handler
30 cs306 Compilation Overview: An Overview of Compilation Phases 9/18 The Structure of a Simple Compiler Parser AST Instruction Selector Insn Assembly Emitter Scanner Semantic Analyser Symtab Handler Register Allocator Assembly Program Source Program
31 cs306 Compilation Overview: An Overview of Compilation Phases 9/18 The Structure of a Simple Compiler Front End Back End Parser AST Instruction Selector Insn Assembly Emitter Scanner Semantic Analyser Symtab Handler Register Allocator Assembly Program Source Program
32 cs306 Compilation Overview: An Overview of Compilation Phases 10/18 Translation Sequence in Our Compiler: Parsing a=b<10?b:c; Input
33 cs306 Compilation Overview: An Overview of Compilation Phases 10/18 Translation Sequence in Our Compiler: Parsing a=b<10?b:c; Input AsgnStmnt Lhs = E ; E? E : E E < E Issues: num Parse Tree Grammar rules, terminals, non-terminals Order of application of grammar rules eg. is it (a = b<10?) followed by (b:c)? Values of terminal symbols eg. string 10 vs. integer number 10.
34 cs306 Compilation Overview: An Overview of Compilation Phases 11/18 Translation Sequence in Our Compiler: Semantic Analysis a=b<10?b:c; Input AsgnStmnt Lhs = E ; E? E : E E < E num Parse Tree
35 cs306 Compilation Overview: An Overview of Compilation Phases 11/18 Translation Sequence in Our Compiler: Semantic Analysis a=b<10?b:c; Input AsgnStmnt Lhs = E ; (a,int) =?: (int) E < E E? E : E num Parse Tree < (bool) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes) Issues: Symbol tables Have variables been declared? What are their types? What is their scope? Type consistency of operators and operands The result of computing b<10? is bool and not int
36 cs306 Compilation Overview: An Overview of Compilation Phases 12/18 Translation Sequence in Our Compiler: IR Generation a=b<10?b:c; Input AsgnStmnt Lhs = E E < E E? E : E num Parse Tree ; (a,int) = < (bool)?: (int) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes)
37 cs306 Compilation Overview: An Overview of Compilation Phases 12/18 Translation Sequence in Our Compiler: IR Generation a=b<10?b:c; Input T 0 Tree List = Not < b 10 IfGoto T 0 = T 1 L0: T 1 L1: a Goto L1: = = L0: b c T 1 AsgnStmnt Lhs = E E < E Issues: E? E : E num Parse Tree ; (a,int) = < (bool)?: (int) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes) Convert to maximal trees which can be implemented without altering control flow Simplifies instruction selection and scheduling, register allocation etc. Linearise control flow by flattening nested control constructs
38 cs306 Compilation Overview: An Overview of Compilation Phases 13/18 Translation Sequence in Our Compiler: Instruction Selection a=b<10?b:c; Input T 0 Tree List = Not < b 10 IfGoto T 0 = L0: AsgnStmnt Lhs = E E < E E? E : E num Parse Tree ; (a,int) = < (bool)?: (int) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes) T 1 L0: T 1 L1: a Goto L1: = = b c T 1
39 cs306 Compilation Overview: An Overview of Compilation Phases 13/18 Translation Sequence in Our Compiler: Instruction Selection a=b<10?b:c; Input T 0 Tree List = Not < b 10 IfGoto T 0 = T 1 L0: T 1 L1: a Goto L1: = = L0: b c T 1 AsgnStmnt Lhs = E E < E E? E : E num Parse Tree ; Instruction List T 0 b T 0 T 0 < 10 T 0! T 0 if T 0 > 0 goto L0: T 1 b goto L1: L0: T 1 c L1: a T 1 Issues: (a,int) = < (bool)?: (int) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes) Cover trees with as few machine instructions as possible Use temporaries and local registers
40 cs306 Compilation Overview: An Overview of Compilation Phases 13/18 Translation Sequence in Our Compiler: Instruction Selection a=b<10?b:c; Input T 0 Tree List = Not < b 10 IfGoto T 0 = T 1 L0: T 1 L1: a Goto L1: = = L0: b c T 1 AsgnStmnt Lhs = E E < E E? E : E num Parse Tree ; Instruction List T 0 b T 0 T 0 < 10 T 0! T 0 if T 0 > 0 goto L0: T 1 b goto L1: L0: T 1 c L1: a T 1 Issues: (a,int) = < (bool)?: (int) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes) Cover trees with as few machine instructions as possible Use temporaries and local registers
41 cs306 Compilation Overview: An Overview of Compilation Phases 14/18 Translation Sequence in Our Compiler: Emitting Instructions a=b<10?b:c; Input T 0 Tree List = Not < b 10 IfGoto T 0 = T 1 L0: T 1 L1: a Goto L1: = = L0: b c T 1 AsgnStmnt Lhs = E E < E E? E : E num Parse Tree ; Instruction List T 0 b T 0 T 0 < 10 T 0! T 0 if T 0 > 0 goto L0: T 1 b goto L1: L0: T 1 c L1: a T 1 (a,int) = < (bool)?: (int) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes)
42 cs306 Compilation Overview: An Overview of Compilation Phases 14/18 Translation Sequence in Our Compiler: Emitting Instructions a=b<10?b:c; Input T 0 Tree List = Not < b 10 IfGoto T 0 = T 1 L0: T 1 L1: a Goto L1: = = L0: b c T 1 AsgnStmnt Lhs Issues: = E Offsets E of? E variables : E in the stack frame E < E Actual register numbers andnum assembly mnemonics Code Parseto Tree construct and discard activation records Instruction List T 0 b T 0 T 0 < 10 T 0! T 0 if T 0 > 0 goto L0: T 1 b goto L1: L0: T 1 c L1: a T 1 ; (a,int) = < (bool)?: (int) (b,int) (c,int) num (b,int) (10,int) Abstract Syntax Tree (with attributes) Assembly Code lw $t0, 4($fp) slti $t0, $t0, 10 not $t0, $t0 bgtz $t0, L0: lw $t0, 4($fp) b L1: L0: lw $t0, 8($fp) L1: sw 0($fp), $t0
43 Part 3 Compilation Models
44 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Compilation Models Davidson Fraser Model
45 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End Compilation Models Input Source Program Davidson Fraser Model AST
46 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End Compilation Models Input Source Program Davidson Fraser Model AST Optimizer Target Indep. IR
47 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End Compilation Models Input Source Program Davidson Fraser Model AST Optimizer Target Indep. IR Code Generator Target Program
48 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End Compilation Models Input Source Program Davidson Fraser Model Front End AST AST Optimizer Target Indep. IR Code Generator Target Program
49 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End Compilation Models Input Source Program Davidson Fraser Model Front End AST Optimizer Target Indep. IR AST Expander Register Transfers Code Generator Target Program
50 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End Compilation Models Input Source Program Davidson Fraser Model Front End AST Optimizer Target Indep. IR Code Generator AST Expander Register Transfers Optimizer Register Transfers Target Program
51 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End Compilation Models Input Source Program Davidson Fraser Model Front End AST Optimizer Target Indep. IR Code Generator Target Program AST Expander Register Transfers Optimizer Register Transfers Recognizer Target Program
52 cs306 Compilation Overview: Compilation Models 15/18 Aho Ullman Model Front End AST Optimizer Target Indep. IR Code Generator Target Program Compilation Models Aho Ullman: Instruction selection over optimized IR using cost based tree tiling matching Davidson Fraser: Instruction selection over AST using simple full tree matching based algorithms that generate naive code which is target dependent, and is optimized subsequently Davidson Fraser Model Front End AST Expander Register Transfers Optimizer Register Transfers Recognizer Target Program
53 cs306 Compilation Overview: Compilation Models 16/18 Typical Front Ends Parser
54 cs306 Compilation Overview: Compilation Models 16/18 Typical Front Ends Source Program Parser Tokens Scanner
55 cs306 Compilation Overview: Compilation Models 16/18 Typical Front Ends Source Program Scanner Tokens Parser Parse Tree AST AST or Linear IR + Symbol Table Semantic Analyzer
56 cs306 Compilation Overview: Compilation Models 16/18 Typical Front Ends Source Program Scanner Tokens Parser Parse Tree AST AST or Linear IR + Symbol Table Semantic Analyzer Symtab Handler Error Handler
57 cs306 Compilation Overview: Compilation Models 17/18 Typical Back Ends in Aho Ullman Model m/c Ind. IR m/c Ind. Optimizer m/c Ind. IR Compile time evaluations Eliminating redundant computations
58 cs306 Compilation Overview: Compilation Models 17/18 Typical Back Ends in Aho Ullman Model m/c Ind. IR m/c Ind. Optimizer m/c Ind. IR Code Generator m/c Dep. IR Compile time evaluations Eliminating redundant computations Instruction Selection Local Reg Allocation Choice of Order of Evaluation
59 cs306 Compilation Overview: Compilation Models 17/18 Typical Back Ends in Aho Ullman Model m/c Ind. IR m/c Ind. Optimizer m/c Ind. IR Code Generator m/c Dep. IR m/c Dep. Optimizer Compile time evaluations Eliminating redundant computations Instruction Selection Local Reg Allocation Choice of Order of Evaluation Assembly Code
60 cs306 Compilation Overview: Compilation Models 17/18 Typical Back Ends in Aho Ullman Model m/c Ind. IR Register Allocator m/c Ind. Optimizer m/c Ind. IR Code Generator m/c Dep. IR Instruction Scheduler Compile time evaluations Eliminating redundant computations Instruction Selection Local Reg Allocation Choice of Order of Evaluation Peephole Optimizer Assembly Code
61 cs306 Compilation Overview: Compilation Models 18/18 Retargetability in Aho Ullman and Davidson Fraser Models Instruction Selection Aho Ullman Model Davidson Fraser Model Machine independent IR is expressed in the form of trees Machine instructions are described in the form of trees Trees in the IR are covered using the instruction trees Optimization
62 cs306 Compilation Overview: Compilation Models 18/18 Retargetability in Aho Ullman and Davidson Fraser Models Instruction Selection Aho Ullman Model Davidson Fraser Model Machine independent IR is expressed in the form of trees Machine instructions are described in the form of trees Trees in the IR are covered using the instruction trees Cost based tree pattern matching Optimization
63 cs306 Compilation Overview: Compilation Models 18/18 Retargetability in Aho Ullman and Davidson Fraser Models Instruction Selection Aho Ullman Model Davidson Fraser Model Machine independent IR is expressed in the form of trees Machine instructions are described in the form of trees Trees in the IR are covered using the instruction trees Cost based tree pattern Structural tree pattern matching matching Optimization
64 cs306 Compilation Overview: Compilation Models 18/18 Retargetability in Aho Ullman and Davidson Fraser Models Instruction Selection Aho Ullman Model Davidson Fraser Model Machine independent IR is expressed in the form of trees Machine instructions are described in the form of trees Trees in the IR are covered using the instruction trees Cost based tree pattern Structural tree pattern matching matching Optimization Machine independent
65 cs306 Compilation Overview: Compilation Models 18/18 Retargetability in Aho Ullman and Davidson Fraser Models Instruction Selection Aho Ullman Model Davidson Fraser Model Machine independent IR is expressed in the form of trees Machine instructions are described in the form of trees Trees in the IR are covered using the instruction trees Cost based tree pattern Structural tree pattern matching matching Machine dependent Optimization Machine independent
66 cs306 Compilation Overview: Compilation Models 18/18 Retargetability in Aho Ullman and Davidson Fraser Models Instruction Selection Aho Ullman Model Davidson Fraser Model Machine independent IR is expressed in the form of trees Machine instructions are described in the form of trees Trees in the IR are covered using the instruction trees Cost based tree pattern Structural tree pattern matching matching Machine dependent Optimization Machine independent Key Insight: Register transfers are target specific but their form is target independent
The Design and Implementation of Gnu Compiler Collection
The Design and Implementation of Gnu Compiler Collection Uday Khedker (www.cse.iitb.ac.in/ uday) Department of Computer Science and Engineering, Indian Institute of Technology, Bombay July 2008 Part 1
More informationCompiler Design (40-414)
Compiler Design (40-414) Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007 Evaluation: Midterm Exam 35% Final Exam 35% Assignments and Quizzes 10% Project
More informationAn Overview to Compiler Design. 2008/2/14 \course\cpeg421-08s\topic-1a.ppt 1
An Overview to Compiler Design 2008/2/14 \course\cpeg421-08s\topic-1a.ppt 1 Outline An Overview of Compiler Structure Front End Middle End Back End 2008/2/14 \course\cpeg421-08s\topic-1a.ppt 2 Reading
More informationspecrtl: A Language for GCC Machine Descriptions
specrtl: A Language for GCC Machine Descriptions GCC Resource Center, Department of Computer Science and Engineering, Indian Institute of Technology, Bombay April 2011 GROW 2011, Chamonix specrtl: Outline
More informationCompiler Design. Computer Science & Information Technology (CS) Rank under AIR 100
GATE- 2016-17 Postal Correspondence 1 Compiler Design Computer Science & Information Technology (CS) 20 Rank under AIR 100 Postal Correspondence Examination Oriented Theory, Practice Set Key concepts,
More informationCompilers and Code Optimization EDOARDO FUSELLA
Compilers and Code Optimization EDOARDO FUSELLA The course covers Compiler architecture Pre-requisite Front-end Strong programming background in C, C++ Back-end LLVM Code optimization A case study: nu+
More informationThe Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer.
The Compiler So Far CSC 4181 Compiler Construction Scanner - Lexical analysis Detects inputs with illegal tokens e.g.: main 5 (); Parser - Syntactic analysis Detects inputs with ill-formed parse trees
More informationIntermediate Code Generation
Intermediate Code Generation In the analysis-synthesis model of a compiler, the front end analyzes a source program and creates an intermediate representation, from which the back end generates target
More informationCompiler Theory. (Semantic Analysis and Run-Time Environments)
Compiler Theory (Semantic Analysis and Run-Time Environments) 005 Semantic Actions A compiler must do more than recognise whether a sentence belongs to the language of a grammar it must do something useful
More informationLECTURE NOTES ON COMPILER DESIGN P a g e 2
LECTURE NOTES ON COMPILER DESIGN P a g e 1 (PCCS4305) COMPILER DESIGN KISHORE KUMAR SAHU SR. LECTURER, DEPARTMENT OF INFORMATION TECHNOLOGY ROLAND INSTITUTE OF TECHNOLOGY, BERHAMPUR LECTURE NOTES ON COMPILER
More informationWhat is a compiler? var a var b mov 3 a mov 4 r1 cmpi a r1 jge l_e mov 2 b jmp l_d l_e: mov 3 b l_d: ;done
What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g., C++) to low-level assembly language that can be executed by hardware int a,
More informationAlternatives for semantic processing
Semantic Processing Copyright c 2000 by Antony L. Hosking. Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies
More informationCS 415 Midterm Exam Spring SOLUTION
CS 415 Midterm Exam Spring 2005 - SOLUTION Name Email Address Student ID # Pledge: This exam is closed note, closed book. Questions will be graded on quality of answer. Please supply the best answer you
More informationFall Compiler Principles Lecture 6: Intermediate Representation. Roman Manevich Ben-Gurion University of the Negev
Fall 2015-2016 Compiler Principles Lecture 6: Intermediate Representation Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation
More informationCST-402(T): Language Processors
CST-402(T): Language Processors Course Outcomes: On successful completion of the course, students will be able to: 1. Exhibit role of various phases of compilation, with understanding of types of grammars
More informationIntermediate Code & Local Optimizations
Lecture Outline Intermediate Code & Local Optimizations Intermediate code Local optimizations Compiler Design I (2011) 2 Code Generation Summary We have so far discussed Runtime organization Simple stack
More informationCS5363 Final Review. cs5363 1
CS5363 Final Review cs5363 1 Programming language implementation Programming languages Tools for describing data and algorithms Instructing machines what to do Communicate between computers and programmers
More informationCrafting a Compiler with C (II) Compiler V. S. Interpreter
Crafting a Compiler with C (II) 資科系 林偉川 Compiler V S Interpreter Compilation - Translate high-level program to machine code Lexical Analyzer, Syntax Analyzer, Intermediate code generator(semantics Analyzer),
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationCS 4201 Compilers 2014/2015 Handout: Lab 1
CS 4201 Compilers 2014/2015 Handout: Lab 1 Lab Content: - What is compiler? - What is compilation? - Features of compiler - Compiler structure - Phases of compiler - Programs related to compilers - Some
More informationGCC Internals: A Conceptual View Part II
: A Conceptual View Part II Abhijat Vichare CFDVS, Indian Institute of Technology, Bombay January 2008 Plan Part I GCC: Conceptual Structure C Program through GCC Building GCC Part II Gimple The MD-RTL
More informationSyntax-Directed Translation. Lecture 14
Syntax-Directed Translation Lecture 14 (adapted from slides by R. Bodik) 9/27/2006 Prof. Hilfinger, Lecture 14 1 Motivation: parser as a translator syntax-directed translation stream of tokens parser ASTs,
More informationThe role of semantic analysis in a compiler
Semantic Analysis Outline The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors
More informationCOMP 303 Computer Architecture Lecture 3. Comp 303 Computer Architecture
COMP 303 Computer Architecture Lecture 3 Comp 303 Computer Architecture 1 Supporting procedures in computer hardware The execution of a procedure Place parameters in a place where the procedure can access
More informationWhat is a compiler? Xiaokang Qiu Purdue University. August 21, 2017 ECE 573
What is a compiler? Xiaokang Qiu Purdue University ECE 573 August 21, 2017 What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g.,
More informationCA Compiler Construction
CA4003 - Compiler Construction David Sinclair Overview This module will cover the compilation process, reading and parsing a structured language, storing it in an appropriate data structure, analysing
More informationFall Compiler Principles Lecture 5: Intermediate Representation. Roman Manevich Ben-Gurion University of the Negev
Fall 2016-2017 Compiler Principles Lecture 5: Intermediate Representation Roman Manevich Ben-Gurion University of the Negev Tentative syllabus Front End Intermediate Representation Optimizations Code Generation
More informationCompiler Design Overview. Compiler Design 1
Compiler Design Overview Compiler Design 1 Preliminaries Required Basic knowledge of programming languages. Basic knowledge of FSA and CFG. Knowledge of a high programming language for the programming
More informationCSE 401 Midterm Exam Sample Solution 11/4/11
Question 1. (12 points, 2 each) The front end of a compiler consists of three parts: scanner, parser, and (static) semantics. Collectively these need to analyze the input program and decide if it is correctly
More informationWorking of the Compilers
Working of the Compilers Manisha Yadav Nisha Thakran IT DEPARTMENT IT DEPARTMENT DCE,GURGAON DCE,GURGAON Abstract- The objective of the paper is to depict the working of the compilers that were designed
More informationAnatomy of a Compiler. Overview of Semantic Analysis. The Compiler So Far. Why a Separate Semantic Analysis?
Anatomy of a Compiler Program (character stream) Lexical Analyzer (Scanner) Syntax Analyzer (Parser) Semantic Analysis Parse Tree Intermediate Code Generator Intermediate Code Optimizer Code Generator
More information5. Semantic Analysis!
5. Semantic Analysis! Prof. O. Nierstrasz! Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes.! http://www.cs.ucla.edu/~palsberg/! http://www.cs.purdue.edu/homes/hosking/!
More informationIncremental Machine Descriptions for GCC
Incremental Machine Descriptions for GCC Sameera Deshpande Uday Khedker. (www.cse.iitb.ac.in/ {sameera,uday}) Department of Computer Science and Engineering, Indian Institute of Technology, Bombay September
More informationPRINCIPLES OF COMPILER DESIGN UNIT I INTRODUCTION TO COMPILING
PRINCIPLES OF COMPILER DESIGN 2 MARKS UNIT I INTRODUCTION TO COMPILING 1. Define compiler? A compiler is a program that reads a program written in one language (source language) and translates it into
More informationCS152 Programming Language Paradigms Prof. Tom Austin, Fall Syntax & Semantics, and Language Design Criteria
CS152 Programming Language Paradigms Prof. Tom Austin, Fall 2014 Syntax & Semantics, and Language Design Criteria Lab 1 solution (in class) Formally defining a language When we define a language, we need
More informationTime : 1 Hour Max Marks : 30
Total No. of Questions : 6 P4890 B.E/ Insem.- 74 B.E ( Computer Engg) PRINCIPLES OF MODERN COMPILER DESIGN (2012 Pattern) (Semester I) Time : 1 Hour Max Marks : 30 Q.1 a) Explain need of symbol table with
More informationSemantic Analysis. Compiler Architecture
Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Source Compiler Architecture Front End Scanner (lexical tokens Parser (syntax Parse tree Semantic Analysis
More informationUndergraduate Compilers in a Day
Question of the Day Backpatching o.foo(); In Java, the address of foo() is often not known until runtime (due to dynamic class loading), so the method call requires a table lookup. After the first execution
More informationFormats of Translated Programs
Formats of Translated Programs Compilers differ in the format of the target code they generate. Target formats may be categorized as assembly language, relocatable binary, or memory-image. Assembly Language
More informationCode Generation. Frédéric Haziza Spring Department of Computer Systems Uppsala University
Code Generation Frédéric Haziza Department of Computer Systems Uppsala University Spring 2008 Operating Systems Process Management Memory Management Storage Management Compilers Compiling
More informationCOLLEGE OF ENGINEERING, NASHIK. LANGUAGE TRANSLATOR
Pune Vidyarthi Griha s COLLEGE OF ENGINEERING, NASHIK. LANGUAGE TRANSLATOR By Prof. Anand N. Gharu (Assistant Professor) PVGCOE Computer Dept.. 22nd Jan 2018 CONTENTS :- 1. Role of lexical analysis 2.
More informationCompilers. Intermediate representations and code generation. Yannis Smaragdakis, U. Athens (original slides by Sam
Compilers Intermediate representations and code generation Yannis Smaragdakis, U. Athens (original slides by Sam Guyer@Tufts) Today Intermediate representations and code generation Scanner Parser Semantic
More informationPrinciples of Compiler Design
Principles of Compiler Design Intermediate Representation Compiler Lexical Analysis Syntax Analysis Semantic Analysis Source Program Token stream Abstract Syntax tree Unambiguous Program representation
More informationPSD3A Principles of Compiler Design Unit : I-V. PSD3A- Principles of Compiler Design
PSD3A Principles of Compiler Design Unit : I-V 1 UNIT I - SYLLABUS Compiler Assembler Language Processing System Phases of Compiler Lexical Analyser Finite Automata NFA DFA Compiler Tools 2 Compiler -
More informationCSE 582 Autumn 2002 Exam 11/26/02
Name There are 8 questions worth a total of 100 points. Please budget your time so you get to all of the questions. Keep your answers brief and to the point. You may refer to the following reference materials:
More informationIntroduction to Compiler Construction
Introduction to Compiler Construction Robert van Engelen http://www.cs.fsu.edu/~engelen/courses/cop5621 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2005 Syllabus
More informationProject Compiler. CS031 TA Help Session November 28, 2011
Project Compiler CS031 TA Help Session November 28, 2011 Motivation Generally, it s easier to program in higher-level languages than in assembly. Our goal is to automate the conversion from a higher-level
More informationCompiling Regular Expressions COMP360
Compiling Regular Expressions COMP360 Logic is the beginning of wisdom, not the end. Leonard Nimoy Compiler s Purpose The compiler converts the program source code into a form that can be executed by the
More informationCode Genera*on for Control Flow Constructs
Code Genera*on for Control Flow Constructs 1 Roadmap Last *me: Got the basics of MIPS CodeGen for some AST node types This *me: Do the rest of the AST nodes Introduce control flow graphs Scanner Parser
More informationFinal Examination May 5, 2005
CS 4352 Compilers and Interpreters Final Examination May 5, 2005 Name Closed Book. If you need more space ask for an extra sheet. 1. [4 points] Pick the appropriate data structure for each purpose: storage
More informationCompilers CS S-08 Code Generation
Compilers CS414-2017S-08 Code Generation David Galles Department of Computer Science University of San Francisco 08-0: Code Generation Next Step: Create actual assembly code. Use a tree tiling strategy:
More informationProf. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan
Language Processing Systems Prof. Mohamed Hamada Software Engineering Lab. The University of Aizu Japan Semantic Analysis Compiler Architecture Front End Back End Source language Scanner (lexical analysis)
More informationRYERSON POLYTECHNIC UNIVERSITY DEPARTMENT OF MATH, PHYSICS, AND COMPUTER SCIENCE CPS 710 FINAL EXAM FALL 96 INSTRUCTIONS
RYERSON POLYTECHNIC UNIVERSITY DEPARTMENT OF MATH, PHYSICS, AND COMPUTER SCIENCE CPS 710 FINAL EXAM FALL 96 STUDENT ID: INSTRUCTIONS Please write your student ID on this page. Do not write it or your name
More informationThe Structure of a Syntax-Directed Compiler
Source Program (Character Stream) Scanner Tokens Parser Abstract Syntax Tree Type Checker (AST) Decorated AST Translator Intermediate Representation Symbol Tables Optimizer (IR) IR Code Generator Target
More informationIR Optimization. May 15th, Tuesday, May 14, 13
IR Optimization May 15th, 2013 Tuesday, May 14, 13 But before we talk about IR optimization... Wrapping up IR generation Tuesday, May 14, 13 Three-Address Code Or TAC The IR that you will be using for
More informationCS 432 Fall Mike Lam, Professor. Code Generation
CS 432 Fall 2015 Mike Lam, Professor Code Generation Compilers "Back end" Source code Tokens Syntax tree Machine code char data[20]; int main() { float x = 42.0; return 7; } 7f 45 4c 46 01 01 01 00 00
More informationChapter 2 A Quick Tour
Chapter 2 A Quick Tour 2.1 The Compiler Toolchain A compiler is one component in a toolchain of programs used to create executables from source code. Typically, when you invoke a single command to compile
More informationAbout the Authors... iii Introduction... xvii. Chapter 1: System Software... 1
Table of Contents About the Authors... iii Introduction... xvii Chapter 1: System Software... 1 1.1 Concept of System Software... 2 Types of Software Programs... 2 Software Programs and the Computing Machine...
More informationSyntax-directed translation. Context-sensitive analysis. What context-sensitive questions might the compiler ask?
Syntax-directed translation Context-sensitive analysis The compilation process is driven by the syntactic structure of the program as discovered by the parser Semantic routines: interpret meaning of the
More informationWhat do Compilers Produce?
What do Compilers Produce? Pure Machine Code Compilers may generate code for a particular machine, not assuming any operating system or library routines. This is pure code because it includes nothing beyond
More informationSemantic actions for expressions
Semantic actions for expressions Semantic actions Semantic actions are routines called as productions (or parts of productions) are recognized Actions work together to build up intermediate representations
More informationIntroduction to Compiler Construction
Introduction to Compiler Construction Robert van Engelen http://www.cs.fsu.edu/~engelen/courses/cop5621 COP5621 Compiler Construction Copyright Robert van Engelen, Florida State University, 2007-2011 Syllabus
More informationCS 415 Midterm Exam Spring 2002
CS 415 Midterm Exam Spring 2002 Name KEY Email Address Student ID # Pledge: This exam is closed note, closed book. Good Luck! Score Fortran Algol 60 Compilation Names, Bindings, Scope Functional Programming
More informationUNIT -1 1.1 OVERVIEW OF LANGUAGE PROCESSING SYSTEM 1.2 Preprocessor A preprocessor produce input to compilers. They may perform the following functions. 1. Macro processing: A preprocessor may allow a
More informationCS 406/534 Compiler Construction Putting It All Together
CS 406/534 Compiler Construction Putting It All Together Prof. Li Xu Dept. of Computer Science UMass Lowell Fall 2004 Part of the course lecture notes are based on Prof. Keith Cooper, Prof. Ken Kennedy
More informationCOMP 181. Prelude. Intermediate representations. Today. High-level IR. Types of IRs. Intermediate representations and code generation
Prelude COMP 181 Lecture 14 Intermediate representations and code generation October 19, 2006 Who is Seth Lloyd? Professor of mechanical engineering at MIT, pioneer in quantum computing Article in Nature:
More informationSemantic Analysis and Type Checking
Semantic Analysis and Type Checking The compilation process is driven by the syntactic structure of the program as discovered by the parser Semantic routines: interpret meaning of the program based on
More informationComp 204: Computer Systems and Their Implementation. Lecture 22: Code Generation and Optimisation
Comp 204: Computer Systems and Their Implementation Lecture 22: Code Generation and Optimisation 1 Today Code generation Three address code Code optimisation Techniques Classification of optimisations
More information5. Semantic Analysis. Mircea Lungu Oscar Nierstrasz
5. Semantic Analysis Mircea Lungu Oscar Nierstrasz Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes. http://www.cs.ucla.edu/~palsberg/
More informationParsing III. CS434 Lecture 8 Spring 2005 Department of Computer Science University of Alabama Joel Jones
Parsing III (Top-down parsing: recursive descent & LL(1) ) (Bottom-up parsing) CS434 Lecture 8 Spring 2005 Department of Computer Science University of Alabama Joel Jones Copyright 2003, Keith D. Cooper,
More informationCS1622. Semantic Analysis. The Compiler So Far. Lecture 15 Semantic Analysis. How to build symbol tables How to use them to find
CS1622 Lecture 15 Semantic Analysis CS 1622 Lecture 15 1 Semantic Analysis How to build symbol tables How to use them to find multiply-declared and undeclared variables. How to perform type checking CS
More informationLECTURE 3. Compiler Phases
LECTURE 3 Compiler Phases COMPILER PHASES Compilation of a program proceeds through a fixed series of phases. Each phase uses an (intermediate) form of the program produced by an earlier phase. Subsequent
More informationCSI32 Object-Oriented Programming
Outline Department of Mathematics and Computer Science Bronx Community College February 2, 2015 Outline Outline 1 Chapter 1 Cornerstones of Computing Textbook Object-Oriented Programming in Python Goldwasser
More information9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation
Language Implementation Methods The Design and Implementation of Programming Languages Compilation Interpretation Hybrid In Text: Chapter 1 2 Compilation Interpretation Translate high-level programs to
More informationProgramming Language Processor Theory
Programming Language Processor Theory Munehiro Takimoto Course Descriptions Method of Evaluation: made through your technical reports Purposes: understanding various theories and implementations of modern
More informationCOMPILER DESIGN. For COMPUTER SCIENCE
COMPILER DESIGN For COMPUTER SCIENCE . COMPILER DESIGN SYLLABUS Lexical analysis, parsing, syntax-directed translation. Runtime environments. Intermediate code generation. ANALYSIS OF GATE PAPERS Exam
More informationSyntax and Grammars 1 / 21
Syntax and Grammars 1 / 21 Outline What is a language? Abstract syntax and grammars Abstract syntax vs. concrete syntax Encoding grammars as Haskell data types What is a language? 2 / 21 What is a language?
More informationRetargeting GCC to Spim: A Recap
Workshop on Essential Abstractions in GCC July 09 Spim MD Levels 0 & 1: Outline 1/32 Outline Incremental Machine Descriptions for Spim: Levels 0 and 1 GCC Resource Center (www.cse.iitb.ac.in/grc Department
More informationCSc 453. Code Generation I Christian Collberg. Compiler Phases. Code Generation Issues. Slide Compilers and Systems Software.
Slide 16 2 Lexing, Parsing Semantic Analysis, Intermediate Code Generation Peephole Optimization Assembly Code Assembler Machine Code Register Allocation Intermediate Code Selection Scheduling Register
More informationWhere we are. What makes a good IR? Intermediate Code. CS 4120 Introduction to Compilers
Where we are CS 4120 Introduction to Compilers Andrew Myers Cornell University Lecture 13: Intermediate Code 25 Sep 09 Source code (character stream) Token stream Abstract syntax tree Abstract syntax tree
More informationIntermediate Code & Local Optimizations. Lecture 20
Intermediate Code & Local Optimizations Lecture 20 Lecture Outline Intermediate code Local optimizations Next time: global optimizations 2 Code Generation Summary We have discussed Runtime organization
More informationCompilers. Compiler Construction Tutorial The Front-end
Compilers Compiler Construction Tutorial The Front-end Salahaddin University College of Engineering Software Engineering Department 2011-2012 Amanj Sherwany http://www.amanj.me/wiki/doku.php?id=teaching:su:compilers
More informationIntroduction. CSc 453. Compilers and Systems Software. 19 : Code Generation I. Department of Computer Science University of Arizona.
CSc 453 Compilers and Systems Software 19 : Code Generation I Introduction Department of Computer Science University of Arizona collberg@gmail.com Copyright c 2009 Christian Collberg Compiler Phases Optimize
More informationSemantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler so far
Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Statically vs. Dynamically typed languages
More informationMidTerm Papers Solved MCQS with Reference (1 to 22 lectures)
CS606- Compiler Construction MidTerm Papers Solved MCQS with Reference (1 to 22 lectures) by Arslan Arshad (Zain) FEB 21,2016 0300-2462284 http://lmshelp.blogspot.com/ Arslan.arshad01@gmail.com AKMP01
More informationCOMP455: COMPILER AND LANGUAGE DESIGN. Dr. Alaa Aljanaby University of Nizwa Spring 2013
COMP455: COMPILER AND LANGUAGE DESIGN Dr. Alaa Aljanaby University of Nizwa Spring 2013 Chapter 1: Introduction Compilers draw together all of the theory and techniques that you ve learned about in most
More informationGUJARAT TECHNOLOGICAL UNIVERSITY
Type of course: System Programming GUJARAT TECHNOLOGICAL UNIVERSITY SYSTEM PROGRAMMING SUBJECT CODE: 21508 B.E. 5 th SEMESTER Prerequisite: Data Structures and Operating Systems Rationale: NA Teaching
More informationCS415 Compilers. Intermediate Represeation & Code Generation
CS415 Compilers Intermediate Represeation & Code Generation These slides are based on slides copyrighted by Keith Cooper, Ken Kennedy & Linda Torczon at Rice University Review - Types of Intermediate Representations
More informationThe Compiler So Far. Lexical analysis Detects inputs with illegal tokens. Overview of Semantic Analysis
The Compiler So Far Overview of Semantic Analysis Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Lexical analysis Detects inputs with illegal tokens Parsing Detects inputs with ill-formed
More informationFormal Languages and Compilers Lecture I: Introduction to Compilers
Formal Languages and Compilers Lecture I: Introduction to Compilers Free University of Bozen-Bolzano Faculty of Computer Science POS Building, Room: 2.03 artale@inf.unibz.it http://www.inf.unibz.it/ artale/
More informationCOMPILER CONSTRUCTION LAB 2 THE SYMBOL TABLE. Tutorial 2 LABS. PHASES OF A COMPILER Source Program. Lab 2 Symbol table
COMPILER CONSTRUCTION Lab 2 Symbol table LABS Lab 3 LR parsing and abstract syntax tree construction using ''bison' Lab 4 Semantic analysis (type checking) PHASES OF A COMPILER Source Program Lab 2 Symtab
More informationChapter 2. Instructions:
Chapter 2 1 Instructions: Language of the Machine More primitive than higher level languages e.g., no sophisticated control flow Very restrictive e.g., MIPS Arithmetic Instructions We ll be working with
More informationCompilers Crash Course
Compilers Crash Course Prof. Michael Clarkson CSci 6907.85 Spring 2014 Slides Acknowledgment: Prof. Andrew Myers (Cornell) What are Compilers? Translators from one representation of program code to another
More informationSyntax/semantics. Program <> program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing
Syntax/semantics Program program execution Compiler/interpreter Syntax Grammars Syntax diagrams Automata/State Machines Scanning/Parsing Meta-models 8/27/10 1 Program program execution Syntax Semantics
More informationPSD1C SYSTEM SOFTWAE UNIT: I - V PSD1C SYSTEM SOFTWARE
PSD1C SYSTEM SOFTWAE UNIT: I - V 1 Syllabus Unit-I Language Processors Types of Language Processors Language Processing Activities Fundamentals of Language Processing Language Specification Data Structures
More informationCS453 Compiler Construction
CS453 Compiler Construction Original Design: Michelle Strout Instructor: Wim Bohm wim.bohm@gmail.com, bohm@cs.colostate.edu Computer Science Building 344 Office hour: Monday 1-2pm TA: Andy Stone aistone@gmail.com,
More informationData Structures and Algorithms in Compiler Optimization. Comp314 Lecture Dave Peixotto
Data Structures and Algorithms in Compiler Optimization Comp314 Lecture Dave Peixotto 1 What is a compiler Compilers translate between program representations Interpreters evaluate their input to produce
More informationAcknowledgement. CS Compiler Design. Semantic Processing. Alternatives for semantic processing. Intro to Semantic Analysis. V.
Acknowledgement CS3300 - Compiler Design Intro to Semantic Analysis V. Krishna Nandivada IIT Madras Copyright c 2000 by Antony L. Hosking. Permission to make digital or hard copies of part or all of this
More information5. Semantic Analysis. Mircea Lungu Oscar Nierstrasz
5. Semantic Analysis Mircea Lungu Oscar Nierstrasz Thanks to Jens Palsberg and Tony Hosking for their kind permission to reuse and adapt the CS132 and CS502 lecture notes. http://www.cs.ucla.edu/~palsberg/
More informationUNIT I INTRODUCTION TO COMPILER 1. What is a Complier? A Complier is a program that reads a program written in one language-the source language-and translates it in to an equivalent program in another
More information