LabHub
はじめる
배우기 러닝패스 코스

コンパイラ — 小さな言語を最初から最後まで作る

작은 언어 '미니' 를 렉서·파서·의미 분석·트리 인터프리터·바이트코드 VM·최적화·x86-64 코드 생성·레지스터 할당과 GC 까지 직접 만들고, 모듈마다 만든 것이 다음 모듈의 입력이 됩니다. 채점기는 적어 낸 답이 아니라 여러분의 구현을 무작위 프로그램으로 돌려 기준 구현과 대조하고, 코드 생성은 실제로 구워 실행합니다. 끝에서는 gcc·clang 의 -O0/-O2 어셈블리와 LLVM IR 을 같은 눈으로 읽어, 실무 컴파일러가 무엇을 하는지 숫자로 확인합니다.

고급 · 레슨 30 · 실습 10

실습 시작하기

커리큘럼

コンパイラの仕事 — 翻訳するか、すぐ実行するか

レキサー — 文字をトークンに、位置は最後まで

パーサー — 再帰下降と Pratt、そしてエラー回復

意味解析 — スコープと名前解決、分かるところの型

木をたどるインタプリタ — 環境とクロージャ

バイトコードとスタック VM — 定数プール、スロット、ジャンプの後埋め

中間表現と最適化 — 定数畳み込み、CFG、支配とSSA

x86-64 コード生成 — 呼び出し規約とスタックフレーム

レジスタ割り当てとガベージコレクション — 線形スキャンと mark-sweep

実務コンパイラを読む — gcc と clang の出力を数える

참고 문서