← 返回日报
精读 预计 3 分钟

Advanced Compilers: The Self-Guided Online Course

摘要

课程由 Adrian Sampson 主讲,覆盖中间表示、数据流、经典优化、并行化、JIT 编译与垃圾回收等主题;学习材料包括线性时间线、每课视频与书面笔记、开放式实现任务(用 LLVM 与课堂专属 IR 完成);自导版可忽略截止日期、无 Zulip 讨论,结业项目是 “通过编译器改变世界”;共 14 课,包含 Lesson 1 欢迎课与论文《Producing Wrong Data Without Doing Anything Obviously Wrong!》及 SIGPLAN 实证评估指南,Lesson 2 程序表示与 Bril 起步,Lesson 3 本地分析优化(简单死代码消除、本地值编号),Lesson 4 数据流与实现任务,Lesson 5 全局分析与《Efficient Path Profiling》,Lesson 6 静态单赋值与《Provably Correct Peephole Optimizations with Alive》,Lesson 7 LLVM 介绍与编写 LLVM pass,Lesson 8 循环优化,Lesson 9 过程间分析与《Type-Based Alias Analysis》,Lesson 10 别名分析与两篇垃圾回收论文,Lesson 11 内存管理与两篇自省型动态编译论文,Lesson 12 动态编译器、追踪与推测、超级优化器与《Chlorophyll》空间架构合成编译器,Lesson 13 并发并行(多篇论文),Lesson 14 快速编译器。

荐读理由

照 Bril IR + LLVM pass 架构与 Alive peephole 工具就能把个人项目编译优化跑通,无需全论文啃,实打实能改判断

原文

CS 6120: Advanced Compilers: The Self-Guided Online Course

CS 6120 is a PhD-level Cornell CS course by Adrian Sampson on programming language implementation. It covers universal compilers topics like intermediate representations, data flow, and “classic” optimizations as well as more research-flavored topics such as parallelization, just-in-time compilation, and garbage collection. The work consists of reading papers and open-source hacking tasks, which use LLVM and an educational IR invented just for this class.

This page lists the curriculum for following this course at the university of your imagination, for four imagination credits (ungraded). There’s a linear timeline of lessons interspersed with papers to read. Each lesson has videos and written notes, and some have implementation tasks for you to complete. Tasks are all open-ended, to one degree or another, and are meant to solidify your understanding of the abstract concepts by turning them into real code. The order represents a suggested interleaving of video-watching and paper-reading.

Some differences with the “real” CS 6120 are that you can ignore the task deadlines and you can’t participate in our discussion threads on Zulip. Real 6120 also has an end-of-semester course project—in the self-guided version, your end-of-semester assignment is to change the world through the magic of compilers.

The instructor is a video production neophyte, so please excuse the production values, especially in the early lessons. CS 6120 is open source and on GitHub, so please file bugs if you find problems.

When you finish the course, please fill out this feedback form.

Lesson 1: Welcome & Overview

Lesson 2: Representing Programs

Lesson 3: Local Analysis & Optimization

Lesson 4: Data Flow

Lesson 5: Global Analysis

Lesson 6: Static Single Assignment

Lesson 7: LLVM

Lesson 8: Loop Optimization

Lesson 9: Interprocedural Analysis

Lesson 10: Alias Analysis

Lesson 11: Memory Management

Lesson 12: Dynamic Compilers

Lesson 13: Concurrency & Parallelism

Lesson 14: Fast Compilers

Hacker News · 163 赞 · 16 评 讨论 → 阅读原文 →

这条对你有帮助吗?