Сейчас я играю с интерпретатором байт-кода:
Программа -- содержимое вектора
int M[]={cmd1,cmd2,cmd3,...};
где cmdX -- команда стековой форт-машины.
Используется 3 типа команд:
0op: одно машинное слово (cell)
1op: опкод (cell) и параметр (cell)
префикс (cell) и данные, скомпилированные следом (например строка)
Интерпретатор выбирает из памяти ВМ (массива M[]) очередной опкод, и выполняет
код, реализующий эту команду.
Набор команд основан на стандартном наборе слов форт-системы, и архитектура
виртуальной машины включает несколько стеков: стек данных, возвратов и стек
циклов DO-LOOP.
Для компиляции программ использую кросс-компилятор, написанный на Форте
(целевой компилятор, ЦК), однозадачный интерпретатор под DOS написал на C.
Фактически это очень простой форт-ассемблер.
Для выполнения кода движка по опкоду байт-кода в Cшной версии я использую
jump table:
void cmd1();
void cmd2();
void cmd3();
void (*JT[])()={cmd1,cmd2,cmd3,..}; // таблица указателей на "микрокод"
Чем больше я на это смотрю, тем больше кажется, что это новый тип
операционной системы (к нему можно отнести машины Java, .NET, Inferno и еще
куча других, включая ВМ Perl и Python).
Самым перспективным направлением применения мне кажется использование в
мобильных цифровых устройствах, которые сейчас появляются десятками, на самых
разных процессорах и с сильно отличающейся аппаратной архитектурой
(мобильники, наладонники, встраиваемые системы в стиральных машинах и
телевизорах).
Требуемые вычислительные ресурсы очень маленькие (этим давно отличается Форт),
а архитектура ВМ очень простая, поэтому движок (интерпретатор) может быть
написан буквально за пару часов для любой системы и на любом языке.
Хотелось бы собрать группу кодеров, которым было бы интересно написать
программы для FVM, движки для разных систем (лично мне хотелось бы поиметь
версию для монохромного КПК Palm IIIxe с PalmOS 4.1), и особенно тех, кто бы
засунул движок и программы в реальное железо (современные клоны Spectrum ?).
Linux, которую сейчас пытаются засунуть в мобильные девайсы, по-моему слишком
толстая для таких применений -- на i386 только ядро занимает около мегабайта
ОЗУ, а еще нужен графический движок (сервер X Window) и куча библиотек. Форт,
компилирующий в байт-код был бы отличной системой. Основная проблема как и с
Linux на desctopе -- нет критической массы прикладных программ и в какой-то
мере удобных библиотек для их написания.
Напишите pls, кому интересно это направление -- остались ли еще хакеры,
которым интересно написать еще одну операционную систему с нуля, не используя
наработки фонда FSF/GNU для C(++) ?
Зачаток проекта лежит на http://akps.ssau.ru под CVS и по адресу
http://akps.ssau.ru/www/FVM/ выкладывается последняя версия исходников
и документации.
================
http://akps.ssau.ruforth@km.ru
FidoNet SU.FORTH 2:5057/18.29
tel.: +7 8462 28 9910 (work), 15 4313 (home)