|
CSE 401, Wi13:
Final Exam Topics
|
|
This is meant as a quick reminder of topics covered this quarter. Any
topic related to compiling is reasonable on the final (i.e, what would you
need to do to implement some feature, from the front to the back end of the
compiler). You may bring two sheets of paper with any hand-written notes you
wish.
- Distribution of tasks in phases of a typical compiler (parsing, semantics,
optimization, register allocation, code gen, etc.)
- Scanning
- Parsing
- LR(0) parsing
- SLR parsing
- LL and LALR parsing at a high level
- Intermediate Representation
- Abstract syntax trees
- Visitor pattern
- Control Flow Graph
- Symbol Tables
- Typical information recorded for names
- Scopes; where is the declaration of a name valid
- General organization of symbol tables for MiniJava (global, per-class,
per-method)
- Static semantics
- Role of types in programming languages
- Examples of checks for typical language constructs
- x86-64 Architecture - basic instruction set as used in the project
- You should be able to read simple functions in assembly language, but you won't have to write any assembly from scratch on the exam.
- Runtime Storage Layout
- Representation
of scalars, arrays, objects
- Memory areas: static, stack, heap
- Calling
Conventions
- Caller vs. Callee
- Function prologue and epilogue
- What things must be taken care of on call
and return
- Layout of
stack frame
- Object
Representation
- Data layout
- Inheritance
- Method invocation
with inheritance (vtables and their layout)
- Code Generation for other language constructs
- Graph coloring register allocation - understand the basic concepts from Preston Briggs' lecture
- SSA form
- Understand what it is, and the steps needed in order to convert to/from SSA form
- Be able to convert a simple example code block to SSA form
- Standard Optimizations, e.g., common subexpression elimination, constant propagation, dead assignment elimination
|
|
Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA 98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
|