Introduction to Compilers and Low-Level Systems
Lexical Analysis: Tokenization and Regular Expressions
Implementing a Lexical Analyzer with Flex
Syntax Analysis: Context-Free Grammars and Parsing
Top-Down Parsing: LL(1) Parsers
Bottom-Up Parsing: LR(0), SLR(1), and LALR(1) Parsers
Using Bison for Parser Generation
Abstract Syntax Trees (ASTs)
Semantic Analysis: Type Checking
Semantic Analysis: Symbol Tables and Scope Resolution
Intermediate Code Generation: Introduction to IR
Intermediate Code Generation: Three-Address Code
Code Optimization: Introduction and Basic Blocks
Code Optimization: Local Optimizations
Code Optimization: Global Optimizations
Code Generation: Instruction Selection
Code Generation: Register Allocation
Code Generation: Calling Conventions
Target Architecture: x86 Assembly
Target Architecture: ARM Assembly
Compiler Construction Tools: LLVM
Compiler Construction Tools: GCC
Putting It All Together: Building a Simple Compiler
Advanced Topics: Just-In-Time (JIT) Compilation
Advanced Topics: Garbage Collection
Advanced Topics: Compiler Security
Advanced Optimization Techniques: Loop Unrolling
Advanced Optimization Techniques: Inlining
Advanced Optimization Techniques: Vectorization
Compiler Design for Embedded Systems: Constraints and Considerations
Compiler Design for Operating Systems: Kernel Compilation
Intermediate Code Optimization: Data Flow Analysis
Intermediate Code Optimization: Static Single Assignment (SSA)
Code Generation: Instruction Scheduling
Code Generation: Peephole Optimization
Memory Management in Compilers: Stack Allocation
Memory Management in Compilers: Heap Allocation
Debugging and Profiling Compiled Code
Compiler Testing and Validation
Cross-Compilation and Toolchains
Compiler Design for Domain-Specific Languages (DSLs)
Compiler Design for Parallel Architectures
Compiler Design for Security: Buffer Overflow Protection
Compiler Design for Security: Control Flow Integrity (CFI)
Advanced Code Generation Techniques: SIMD Instructions
Advanced Code Generation Techniques: GPU Code Generation
Compiler as a Service (CaaS) and Cloud-Based Compilation
The Future of Compiler Design: Emerging Trends