Home ru
Когда ваша ОС подаст первые признаки жизни, вы захотите добавить какой-то интерфейс для взаимодействия с ней. Наиболее мощный вариант, который первым приходит в голову -- CLI: интерфейс командной строки (командная консоль).
FORTH старый язык программирования созданный Чарльзом Муром (Charles Moore) в 70х годах для автоматизации (управления радиотелескопом). Здесь бы будем использовать Форт как первое введение в реализацию интерпретатора (и компилятора) благодаря его ужасной простоте. Фактически FORTH не имеет множества вещей которые должны быть в реализации языка программирования, так что мы сможем сфокусироваться на понимании интерпретатора в целом.
В этом разделе вы сможете увидеть самые простые примеры по использованию стандартных утилит flex/bison предназначенных для генерации кода, который вы можете встроить в вашу ОС и получить командную консоль с требуемым синтаксисом.
Затем мы рассмотрим в деталях более сложное применение flex/bison -- компилятор байткода для FVM, как пример ассемблера который вы можете написать сами с нуля.
И наконец мы реализуем полнофункциональный Интерпретатор с инфиксным питонским синтаксисом, динамической памятью со сборкой мусора, и SmallTalk-подобной живой объектной системой с передачей сообщений, работающим как ядро ОС.
Для работы вам может потребоваться самостоятельно собранный набор компиляторов и утилит -- GNU toolchain. Обычно достаточно типового дистрибутива для вашей рабочей ОС. Но иногда вам может потребоваться самая свежая версия компилятора или какая-то специальная сборка с нетипичным набором опций.
Под Windows для разработки под i386 достаточно использовать mingw32 и один из эмуляторов QEMU/bochs. Но вам может потребоваться кросс-компилятор для какого-то другого процессора, или специальная сборка, например пакет кросс-компиляторов сразу для целого набора целевых платформ). Попытка сделать это под Windows (используя MSYS или Cygwin) убьет ваш моск. Поэтому вам придется установить Linux хотя бы в виртуальную машину и собрать ваш toolchain из исходников по достаточно сложной схеме BUILD-HOST-TARGET которая называется канадский крест.
Если вы захотите поиграть с разработкой оптимизирующих компиляторов, или столкнетесь с вычислительными задачами, требующими реального машинного кода и жесткой оптимизации, то вам может потребоваться сборка LLVM под ваши задачи. Сделать это под Windows малореально. Применение LLVM также требует приличных знаний, так что в этом разделе вы можете найти необходимые сведения для начала.
Этот проект использует большой Makefile в котором прописаны все операции компиляции и запуска, так что вам нужно немного информации о запуске элементов проекта, и о том как использовать GNU Make и GNU Autotools для сопровождения других ваших проектов.