Compilers

Please watch the relevant video prior to class. Also, download the exercises - we will be using them during class. Slides exist in two forms, with and without animations.

Introduction

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
compilers-1Introduction
  • Languages and Translators
  • Compiler Phases – Analysis Phase
  • Compiler Phases – Synthesis Phase
  • Compiler Modularity
  • Compilation Example
  • Systems Software and Runtime Systems
  compilers-1-exercises.zip29m
tiny-1Compiling a Simple Language
  • Languages and Translators
  • Lexical Analysis
  • Syntactic Analysis
  • Concrete vs. Abstract Syntax
  • Semantic Analysis
  • AST Evaluation
  • IR Generation
  • Interpreting the IR
  • Code Generation
  • Putting it all Together
tiny-1-exercises.zipcompilers-125m

Lexical Analysis

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
lex-1Lexical Analysis I
  • Language Issues
  • Regular Grammars
  • Regular Expressions
  • Exercises
  • Scanner Generators
  lex-1-exercises.zip tiny-120m
lex-2Lexical Analysis II- Finite State Machines
  • Deterministic Finite Atomaton
  • Exercises
  • Nondeterministic Finite Atomaton
  • Implementing Lexical Analysis
  • Dealing with Keywords
lex-2-exercises.zip lex-123m
lex-3Lexical Analysis III - From REs to DFAs
  • RE to NFA (Thompson's Construction)
  • From NFA to DFA
  • SubsetConstrction Example
  • NFA to DFA -Take 2
lex-3-exercises.zip lex-217m

Syntactic Analysis

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
grammars-1Formal Grammars
  • Grammars
  • Context-Free Grammars
  • Precedence, Associativity, Ambiguity
  • Abstract Syntax
  • Exercises
grammars-1-exercises.ziptiny-131m
parse-1Parsing I - Grammars
  • Context-Free Grammars Revisited
  • Top-Down Parsing
  • Recursive Descent Parsing - 4 Problems
  • Precedence, Associativity, Ambiguity
  • Further Grammar Transformations
parse-1-exercises.zip grammars-123m
parse-2Parsing 2- Top-Down Parsing
  • Top-down Parsing
  • Computing FIRST Sets
  • Computing FOLLOW Sets
  • Construct Top-Down Parser
  • Expression Grammar
parse-2-exercises.zip parse-130m
parse-3Parsing 3- Predictive Parsing
  • Predictive Parsing
  • Building the Parse Table
  • Error Recovery
  • Exercise
parse-3-exercises.zip parse-217m
parse-4Parsing 4- Tying it all Together
  • Exercise
  • The LL(1) Property
  • Building the Abstract Syntax Tree
parse-4-exercises.zip parse-325m

Semantic Analysis

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
sem-1Semantic Analysis 1
  • Context Conditions
  • Tree-Walk Evaluators
  • Constant Expression Evaluation
  • Constant Declarations
  • Type checking
  • Synthesized vs. Inherited Attributes
  • Environments
  gdb-1-exercises.zipx86-2, ghidra-329m
sem-2Semantic Analysis 2— Declarations
  • Scope Rules
  • Semantic Analysis Tasks
  • Symbol Tables and Environments
  • Threaded Attributes
  • Attribute Grammars
  • Nested Scope
  • Environments
  trace-1-exercises.zipopaque-122m
sem-3Semantic Analysis 3—Type Checking
  • Basic Types
  • Array Types
  • Type Equivalence and Compatibility
  • Type Checking Expressions
  • Type Checking Function Calls
  symex-1-exercises.zipast-1, softprot-1, x86-125m
sem-4Semantic Analysis 4—Wrapping Up
  • Optimizing Treewalk Evaluators
  • Output Attributes
  • Multi-Pass Tree walk Evaluators
  symex-2-exercises.zipsymex-18m

Intermediate Code

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
ghidra-1Intermediate Code 1
  • Tree IR
  • DAG IR
  • Tuple IR
  • Generating Quads
  ghidra-1-exercises.zipx86-2, cfg-119m
interm-2 Intermediate Code 2 –Control Flow
  • Boolean Expressions
  • Boolean Representations
  • Short -Circuit vs. Eager Evaluation
  • Implementing Control Structures
  • Control-Flow Graphs
  • Control flow Analysis
  ghidra-2-exercises.zipghidra-118m
interp-1Interpretation
  • ...
  ghidra-3-exercises.zipghidra-119m
javavm-1Java Bytecosde
  • ...
  ghidra-4-exercises.zipghidra-321m

Machine Code Generation

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
codgen-1Code Generation 1
  • ...
virt-1-exercises.zipcfg-116m
codegen-2Code Generation 2
  • ...
virt-2-exercises.zipvirt-128m
proc-1Procedures 1
  • ...
checksum-1-exercises.zip24m
proc-2Procedures 2
  • ...
arith-1-exercises.zipast-122m

Optimization

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
opt-1Optimization 1
  • ...
  compilers-1-exercises.pdf28m
opt-2Optimization 2

tiny-1-exercises.pdfcompilers-120m

Runtime Systems

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
gc-1Garbage Collection 1
  • ...
  28m
gc-2Gaarbage Collection 2 models-1-exercises.pdfcompilers-120m
oo-1Object Oriented languages 1 models-1-exercises.pdfcompilers-120m
oo-2Object Oriented Languages 2 models-1-exercises.pdfcompilers-120m