Skip to content

Home ru

Dmitry Ponyatov edited this page Sep 25, 2017 · 5 revisions

Home/en

Table of Contents

Реализация CLI (command-line interface) для вашей ОС

CLI: интерфейс командной строки

Когда ваша ОС подаст первые признаки жизни, вы захотите добавить какой-то интерфейс для взаимодействия с ней. Наиболее мощный вариант, который первым приходит в голову -- CLI: интерфейс командной строки (командная консоль).

Язык Форт как ядро системы

FORTH старый язык программирования созданный Чарльзом Муром (Charles Moore) в 70х годах для автоматизации (управления радиотелескопом). Здесь бы будем использовать Форт как первое введение в реализацию интерпретатора (и компилятора) благодаря его ужасной простоте. Фактически FORTH не имеет множества вещей которые должны быть в реализации языка программирования, так что мы сможем сфокусироваться на понимании интерпретатора в целом.

Использование flex/bison для простого CLI интерфейса

В этом разделе вы сможете увидеть самые простые примеры по использованию стандартных утилит flex/bison предназначенных для генерации кода, который вы можете встроить в вашу ОС и получить командную консоль с требуемым синтаксисом.

Компилятор байткода с использованием flex/bison

Затем мы рассмотрим в деталях более сложное применение flex/bison -- компилятор байткода для FVM, как пример ассемблера который вы можете написать сами с нуля.

Интерпретатор

И наконец мы реализуем полнофункциональный Интерпретатор с инфиксным питонским синтаксисом, динамической памятью со сборкой мусора, и SmallTalk-подобной живой объектной системой с передачей сообщений, работающим как ядро ОС.

Сборка GNU toolchain

Для работы вам может потребоваться самостоятельно собранный набор компиляторов и утилит -- GNU toolchain. Обычно достаточно типового дистрибутива для вашей рабочей ОС. Но иногда вам может потребоваться самая свежая версия компилятора или какая-то специальная сборка с нетипичным набором опций.

Сборка кросс-компилятора канадским крестом

Под Windows для разработки под i386 достаточно использовать mingw32 и один из эмуляторов QEMU/bochs. Но вам может потребоваться кросс-компилятор для какого-то другого процессора, или специальная сборка, например пакет кросс-компиляторов сразу для целого набора целевых платформ). Попытка сделать это под Windows (используя MSYS или Cygwin) убьет ваш моск. Поэтому вам придется установить Linux хотя бы в виртуальную машину и собрать ваш toolchain из исходников по достаточно сложной схеме BUILD-HOST-TARGET которая называется канадский крест.

Возня с LLVM

Если вы захотите поиграть с разработкой оптимизирующих компиляторов, или столкнетесь с вычислительными задачами, требующими реального машинного кода и жесткой оптимизации, то вам может потребоваться сборка LLVM под ваши задачи. Сделать это под Windows малореально. Применение LLVM также требует приличных знаний, так что в этом разделе вы можете найти необходимые сведения для начала.

Подробно о Makefile

Этот проект использует большой Makefile в котором прописаны все операции компиляции и запуска, так что вам нужно немного информации о запуске элементов проекта, и о том как использовать GNU Make и GNU Autotools для сопровождения других ваших проектов.

Ссылки

Книги