ПРОЧИТАЙТЕ перед началом вашего проекта компилятора
Вообще-то, это прежде всего мечта... Возможно, когда-нибудь у меня будет свой собственный язык программирования!, но это скоро превратится в кошмар, сразу после того, как вы ищете Как собрать компилятор?,
Я провожу слишком много времени, как и большинство из вас, ребята, за чтением книг о драконах, а также за множеством других статей, ресурсов, форумов и вопросов и ответов. В конце концов я придумал массу знаний о многих ненужных вещах, таких как " Все основные методы синтаксического анализа" или даже " Оптимизация компилятора", но у меня до сих пор нет ясного понимания того, что мне нужно, наконец, сделать с моим проектом компилятора.
Проблема во всех книгах и других ресурсах, которые вам нужны, чтобы понять (и освоить) все это сразу и в начале! Вам нужно понять и реализовать синтаксический анализатор, пока вы еще не знаете, что делать дальше. Кстати, я предполагаю, что вы настоящий новичок в этой теме, однако я знаю, что это было не так для некоторых из вас.
Когда-нибудь я перестану читать эти материалы. Я сказал, что достаточно изучить все детали, я хочу сделать что-то реальное. Итак, я начинаю задавать такие вопросы: какова цель компилятора? Ну, мой ответ был Генерация понятного двоичного кода для процессора. Итак, я сказал, как это должно быть тогда? Ну, что-то вроде этого statement1; statement2;
в 0xAABBCCDD
, и это все.
Тогда я начинаю все с нуля. Я начну с самого простого синтаксиса и машинных кодов. В конце дня у меня был рабочий компилятор, который мог генерировать чистый двоичный код для Intel. Он понимает только несколько инструкций, но это был действительно работающий компилятор, хотя и очень простой.
Позже я улучшил синтаксический анализатор и т. Д. И с тех пор я чувствовал себя намного счастливее. Теперь я использую все эти материалы, когда они мне нужны. Моя проблема заключалась в том, что я изо всех сил пытался понять и освоить все, потому что я думал (в основном другие говорили), что я не могу сделать компилятор, даже простой, без чтения всех этих книг и статей.
Здесь я хотел бы попросить вас перечислить идеи и концепции, которые, по вашему мнению, необходимо знать перед началом любых проектов компиляции. Вещи, которые, по вашему мнению, достаточно просты для начинающего, чтобы его можно было прочитать и понять, лучше представить весь проект, перейти к написанию реального кода и понять, как работает настоящий компилятор.
В качестве примера смотрите мой ответ здесь!
PS Кстати, перед тем как вы проголосуете, позвольте мне еще раз пояснить, что я не говорю, что эти материалы не годятся. Я просто говорю, что тема невероятно расплывчата. Неправильный подход - идти на все сразу. Самое разумное решение - начать с Hello World! Например, вместо проекта с теми же функциями, что и в GCC и т. д.
2 ответа
Самое главное, чтобы понять, как работает процессор. Сначала вам нужно выбрать конкретную цель, но вы, очевидно, сможете расширить ее позже. Документация производителя также очень вам поможет.
Разминка видео
- Введение в процессоры @ Youtube
- Как работает процессор @ демонстрация Youtube через MSX88
- Регистры процессора @ Youtube
- Регистры процессора @ Youtube
- 8086 Регистрация Set @ Youtube
- x64 Регистрация Set @ Youtube
- Как компьютеры добавляют номера @ Youtube
- FLAGS Зарегистрироваться @ Youtube
- Организация системы: CPU-RAM-I/O @ Youtube
- Не на английском, но стоит посмотреть: CPU Builder @ Youtube
статьи
Руководства по аппаратному обеспечению
Руководства по флексам и бизонам дают несколько очень простых примеров написания базового интерпретатора:
Я могу получить доступ к обоим на своем локальном компьютере с помощью команд "info flex" и "info bison" соответственно.
РЕДАКТИРОВАТЬ: Просто видел и думал, что я бы поделиться этим ответом на аналогичный вопрос: /questions/11924326/prostoj-kompilyator-dlya-optimizatsii/11924333#11924333