Course
Title: Compiler Construction
Course
Code: CS-4141
Course
Structure: Lectures: 3 / Labs: 0
Credit
Hours: 3
Prerequisites:
CS-3131 (Theory of Automata and Formal Languages)
At the end of
the course students will understand the overall structure of a compiler, and
will
know significant details of a number of important techniques commonly used. They will be
aware of the way in which language features raise challenges for compiler builders.
know significant details of a number of important techniques commonly used. They will be
aware of the way in which language features raise challenges for compiler builders.
Principles of
Compilation, Compiler Structure, High-Level View of Translation, Desirable
Properties of a Compiler.Scanners.Parsers.Context-Sensitive Analysis.Intermediate
Representations.The Procedure Abstraction.Code Shape.Code Optimization.Data-Flow
Analysis.Scalar Optimizations.Instruction Selection.Instruction Scheduling. Register Allocation.
Implementation of a prototype compiler(Lab Assignment for the Semester)
Properties of a Compiler.Scanners.Parsers.Context-Sensitive Analysis.Intermediate
Representations.The Procedure Abstraction.Code Shape.Code Optimization.Data-Flow
Analysis.Scalar Optimizations.Instruction Selection.Instruction Scheduling. Register Allocation.
Implementation of a prototype compiler(Lab Assignment for the Semester)
1.
Overview of
Compilation: Principles of Compilation, Compiler Structure, High-Level
View of Translation, Desirable Properties of a Compiler. [TB: Ch.1]
View of Translation, Desirable Properties of a Compiler. [TB: Ch.1]
2.
Scanners:
Recognizing Words, Regular Expressions, Implementing Scanners. [TB: Ch.2]
3.
Parsers:
Expressing Syntax, Top-Down Parsing, Bottom-Up Parsing. [TB: Ch.3]
4.
Context-Sensitive
Analysis: Type Systems, Attribute-Grammar Framework, Ad Hoc
Syntax-Directed Translation. [TB: Ch.4]
Syntax-Directed Translation. [TB: Ch.4]
5.
Intermediate
Representations: Graphical IRs, Linear IRs, Mapping Values to Names,
Symbol Tables. [TB: Ch.5]
Symbol Tables. [TB: Ch.5]
6.
The Procedure
Abstraction: Procedure Calls, Name Spaces, Communicating Values
Between Procedures, Standardized Linkages. [TB: Ch.6]
Between Procedures, Standardized Linkages. [TB: Ch.6]
7.
Code Shape:
Assigning Storage Locations, Arithmetic Operators, Boolean and Relational
Operators, Storing and Accessing Arrays, Character Strings, Structure References,
Control-Flow Constructs, Procedure Calls. [TB: Ch.7]
Operators, Storing and Accessing Arrays, Character Strings, Structure References,
Control-Flow Constructs, Procedure Calls. [TB: Ch.7]
8.
Code
Optimization: Scope of Optimization, Local Optimization, Regional Optimization,
Global Optimization, Interprocedural Optimization. [TB: Ch.8]
Global Optimization, Interprocedural Optimization. [TB: Ch.8]
9.
Data-Flow
Analysis: Iterative Data-Flow Analysis, Static Single-Assignment Form,
Inter-procedural Analysis. [TB: Ch.9]
Inter-procedural Analysis. [TB: Ch.9]
10.
Scalar
Optimizations: Taxonomy for Transformations, Example Optimizations. [TB:
Ch.10]
Ch.10]
11.
Instruction
Selection: Code Generation, Extending the Simple Tree-Walk Scheme,
Instruction Selection via Tree-Pattern Matching, Instruction Selection via Peephole
Optimization. [TB: Ch.11]
Instruction Selection via Tree-Pattern Matching, Instruction Selection via Peephole
Optimization. [TB: Ch.11]
12.
Instruction
Scheduling: The Instruction-Scheduling Problem, Local List Scheduling,
Regional Scheduling. [TB: Ch.12]
Regional Scheduling. [TB: Ch.12]
13.
Register
Allocation: Background Issues, Local Register Allocation and Assignment,
Moving Beyond Single Blocks, Global Register Allocation and Assignment.
Moving Beyond Single Blocks, Global Register Allocation and Assignment.
14.
Implementation
of a prototype compiler
(Class Assignment for the Semester)
•
Engineering a
Compiler, Second Edition by Keith Cooper and Linda Torczon, Morgan
Kaufmann; 2ndEdition (February 21, 2011). ISBN-10: 012088478X
Kaufmann; 2ndEdition (February 21, 2011). ISBN-10: 012088478X
•
Compilers:
Principles, Techniques, and Tools By Alfred V. Aho, Ravi Sethi, Jeffrey D.
Ullman, Contributor Jeffrey D. Ullman , Prentice Hall; 2ndEdition (2006). ISBN-10:0321486811
Ullman, Contributor Jeffrey D. Ullman , Prentice Hall; 2ndEdition (2006). ISBN-10:0321486811
•
Modern
Compiler Design, By Dick Grune, Henri E. Bal, Ceriel J. H. Jacobs, Koen G.
Langendoen, Springer; 2ndEdition. (2012). ISBN-10: 1461446988
Langendoen, Springer; 2ndEdition. (2012). ISBN-10: 1461446988
•
Modern
Compiler Implementation in C, By Andrew W. Appel, Maia Ginsburg,
Contributor Maia Ginsburg, Cambridge University Press, (2004). ISBN-10: 0521607655
Contributor Maia Ginsburg, Cambridge University Press, (2004). ISBN-10: 0521607655
0 comments:
Post a Comment