Overview
This course teaches students how a compiler works and how it can be utilized to write more efficient code, including generating obfuscated binaries. The course covers topics such as compilers, abstract syntax trees, intermediate representations, machine code generation, and various optimization techniques. The teaching method includes lectures and practical examples. This course is intended for individuals interested in understanding the inner workings of compilers and improving the performance and security of their code.
Syllabus
Intro
What are compliers?
Compiler Overview
Sample Program
Abstract Syntax Tree
Sample AST
AST Analysis
Intermediate Representation (R)
IR 3 Address Code
IR Registers
IR Example
Machine Code 3 Steps
LLVM Machine Code Gen
Register Allocation
Data Flow Analysis
Single Static Assignment Form (SSA)
Constant Folding Propagation
Strength Reduction
Scalar Evolution
Dead Code Elimination
Loop Invariant Code Motion
Machine Code Optimizations
Specific Tools
Taught by
White Hat Cal Poly