Compilers

Please watch the relevant video prior to class. Also, download the exercises - we will be using them during class. Subtitles (English, Swedish, Japanese, Spanish, and Chinese (PRC and TW)) are available for some videos. Slides exist in two forms, with and without animations. Instructors can contact us for the key to unlock answers to in-class exercises.

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.zip28m
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-120m

Lexical Analysis

#Topic Video SlidesIn-class
Exercises
Prereq-
uisite
Video
Length
lex-1Lexical Analysis I
  • Language Issues
  • Regular Grammars
  • Regular Expressions
  • Scanner Generators
  • 8-bit vs. 16-bit vs. 32-bit vs. 64-bit
  • Addressing Modes
  • x86 Example Execution x86 Intel vs. AT&T Syntax
  • Disassembly
  compilers-132m
lex-2Lexical Analysis II- Finite State Machines
  • Deterministic Finite Atomaton
  • Exercises
  • Nondeterministic Finite Atomaton
  • Implementing Lexical Analysis
  • Dealing with Keywords
x86-2-exercises.zip lex-126m
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
x86-3-exercises.zip lex2-221m

Syntactic Analysis

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

Semantic Analysis

Lectures on debugging, tracing, etc.

#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