Простой для изучения компилятор C11
Наверняка многие мечтали разобраться с тем, как устроены компиляторы их любимых языков программирования. Теория трансляции — непростая тема, но сделать простой компилятор под силу каждому.
Рю Уэяма (Rui Ueyama) создал компилятор языка C, поддерживающий большинство возможностей стандарта C11, специально для обучения других непростому делу разработки компиляторов.
Репозиторий chibicc устроен необычным образом: каждый коммит в истории изменений целостно расширяет возможности более простого компилятора, полученного на предыдущем шаге.
Первый коммит соответствует примитивному компилятору, который считывает число и генерирует код, подставляющий это число в качестве кода возврата. Каждый новый шаг постепенно приближает компилятор к поддержке полноценного языка C современного стандарта. Очень увлекательное путешествие.
У Рю есть и книга, описывающая chibicc, но она написана на японском — вероятно, это не самый удобный вариант для большинства наших читателей.
До chibicc Рю уже разрабатывал компиляторы C-подобных языков, в том числе создал 9cc, простой по своему устройству компилятор с промежуточным представлением и аллокатором регистров, совсем как у «больших» компиляторов.
#digest
Post #47
1.51K