Компилятор Phases SBCL

Я не могу найти ни одного источника, который бы описывал отдельные фазы компилятора SBCL. Какие ресурсы, например документы, описывают эти этапы компилятора SBCL?


person Edmont    schedule 22.06.2013    source источник
comment
Добро пожаловать в Stack Overflow! Помогли ли вам ссылки в работе с компилятором SBCL? У ответа сейчас есть несколько голосов, и если он ответил на ваш вопрос (которого может и не быть), вы можете принять его чтобы другие знали, что это было полезно для вас (и добавили автору и себе немного репутации). Счастливого Лиспинга (и взлома компилятора Лиспа)!   -  person Joshua Taylor    schedule 29.06.2013


Ответы (1)


Статья Фила Кунга Начало взламывать SBCL содержит хорошее описание того, как начать работу над внутренними компонентами SBCL. В разделе о компиляторе он пишет:

Поиск места, где живет компилятор

Работа над самим компилятором требует немного больше работы. Я думаю, что лучше всего пойти в src/compiler/main.lisp и найти compile-component. ir1-phases зацикливается на компоненте и выполняет высокоуровневую оптимизацию до точки фиксации (или мы устанем ждать), а %compile-component обрабатывает преобразование в IR2, а затем в машинный код. Конвейер компиляции практически не изменился с тех пор, как была написана статья о Python, и каждая подфаза имеет свою собственную функцию (и файл). М-. на вещах, которые звучат интересно, вероятно, лучший подход на уровне IR2.

Документ Python, который упоминается там, связан ранее в статье:

Изучение источника

Я часто вижу, как новички пытаются читать исходный код, как книгу, и, как только они понимают, что кода много, пытаются выяснить, в каком порядке читать исходный код. Я не думаю, что это лучший подход. SBCL довольно огромен, и я сомневаюсь, что кто-либо одновременно держит в голове всю систему целиком. "Компилятор Python для CMU Common Lisp" по-прежнему полезен, поскольку обзор, а руководство по внутреннему устройству SBCL является хорошим дополнением. Как только вы приблизитесь к логике начальной загрузки, Кристоф Роудс «SBCL: Sanely-Bootstrappable Common Lisp” помогает понять восклицательные знаки. Более того, я считаю, что предпочтительнее [sic] начать с малого, узнать ровно столько, сколько нужно для выполнения текущей задачи, и признать, что некоторые вещи просто работают, не спрашивая, как (пока).

Вас, вероятно, особенно заинтересует Раздел 8, Фазы компиляции из книги «Компилятор Python для CMU Common Lisp».

person Joshua Taylor    schedule 23.06.2013