Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт апр 26, 2019 15:46

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Nova-forth версии
Автор Сообщение
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Nova-VC обновление 6

Ядро
Завуалированы некоторые редко используемые переменные. Стало меньше слов. В ЦК-версии Новы их 370, в текущем обновлении 360.
Переписано слово LAST-INCLUDE теперь оно проще и понятней.
Небольшой марафет в трансляции файлов (меньше стекомахания).
В ядро добавлено слово RLIT, в ядре нигде не используется, но это слово требуется для некоторых библиотек.
Дошли руки допилить в ЦК слово FROM . исходники стали чуть понятней :)
Добавлено несколько правил в препроцессор.

По наработкам
  • Матрицы
  • Многомерные массивы
  • Реализация односвязного списка
  • Создание стека в памяти
  • Сопрограммы (вспомнить бы, где хотел их применять)
  • Создание отложенных вызовов API-функций
Сообщение Добавлено: Чт мар 07, 2019 00:06
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Nova-VC обновление 5

Изменение ядра:
Убраны слова-рудименты использующиеся только в 1-2 словах.
слово >param мигрировало на средний уровень
подключение каталога DEVELOPMENT вынесено из ядра, теперь это в INI-файле.

Изменение поставки:
Добавлен список библиотек и наработок DOCS/LIBS.HTML
В INI также подключается простейший оптимизатор на случай кода вида:
4 5 +
3 CELLS
и пр.
Этот оптимизатор арифметики не занимает места в кодофайле

Портирование примитивов на 64-бита идёт медленно, ибо лень
Сообщение Добавлено: Вс янв 27, 2019 18:18
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Nova-VC обновление 4

Написан SEARCH . Теперь слово не компилируется из материнской Форт-системы (изначально тянулось аж из СПФ).

TRANSLATE-FILE больше не ставится на откат по умолчанию при вызове кодогенератора FORTH

Вынесены из ядра CHAR и [CHAR] за ненадобностью (АНСИ-комитет :dmad; негодует)

SFIND не выбивает систему, если строка нулевой длины. До этого можно было спровоцировать Нову на харакири, введя минимум 2 символа. Какие, кто догадается?

По наработкам
Доделана библиотека для работы со строками в хипе. Основная часть работоспособна.

Написана ещё одна реализация стека продолжений (кто не понимает, читаем Гасаненко )
PRO CONT CUT: и пр. полезные вещи.

Написан текстовый препроцессор!
Позволяет оптимизировать код уже в текстовом представлении. Короче, занимается подменой.
При написании сего оптимизатора основной упор был сделан на простоту написания обработчиков.

Использован при компиляции Новы. Размер форт-системы уменьшился на 2 кб.

Препроцессор возможно единственный адекватный способ оптимизировать код в строящейся системе.
При этом обычный оптимизатор (~er/opt/optimaizer.f) не подходит на эту роль по двум причинам:
1. создание форта сразу идёт по виртуальным адресам. А оптимизатор не умеет с ними работать.
2. Предстоящее портирование. Если первое можно как-то исправить, то вот с этим начнутся проблемы. Придётся всё переписывать.

Посмотреть сложночитаемый код сгенерированный препроцессором можно в файлике
Сообщение Добавлено: Сб дек 22, 2018 12:31
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Nova-VC
обновление 3

Ядро
Добавлено слово 2MOVE->R делает конкатенацию строк и сохраняет результат на стеке возвратов

Переписано слово INCLUDE-FILE , теперь оно проще.

Слова для работы с плав. точкой вынесены из ядра за ненадобностью.

Переписан всеобщий итератор слов ALL-WORDS-ITER: теперь он не грешит изменением глобальных переменных.

Поправлен цикл интерпретации. Теперь при изчерпании стека данных выдаётся ошибка, а не происходит вылет.

Если ошибка, дошла до верхнего уровня, то её можно обработать самостоятельно. Пропишите в переменную ERROR-XT требуемый обработчик (на входе код ошибки). Пример можно посмотреть в NOVA.INI

Начато портирование примитивов под 64бит.

Почти готов дизассемблер. Уже можно пользоваться.
Сообщение Добавлено: Сб дек 01, 2018 13:02
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Nova-VC

обновление 2

Ядро:

Изменён алгоритм преобразования чисел в строку. Теперь преобразование начинается со старших разрядов (написано на асме).

Библиотеки:
Переписал библиотеку для трансляции JSON
На этот раз все логичнее. Но бектрекинг и откатные техники не дремлют :)

Помимо трансляции добавлены операции вставки данных.
Размер откомпилированного: 8500 байт, а с оптимизатором 6660. :^)
Не шутка. Оптимизатор реально это сделал.

Имеется библиотека для сравнения строки с маской. Маска задаётся форт-словами (C= S= N-N ANY). Работоспособна. В процессе развития.

Основное направление действий сейчас:
JSON, HTTP-сервер, оптимизатор, дизассемблер, причёсывание исходников.
Сообщение Добавлено: Вс ноя 04, 2018 13:15
  Заголовок сообщения:  Nova-forth версия VC 1  Ответить с цитатой
Nova-VC

обновление 1

Ядро

    COMPILE, стал вектором. А это значит, что можно дополнительно влиять на последнюю стадию компиляции.
    Добавлено чтение INI-файла перед запуском системы
    Поправлена интерпретация командной строки (ранее ругался на пути с пробелами).

Библиотеки:
Создание и загрузка оверлеев. Оверлей в данном случае это временный словарь сохранённый в бинарном формате. При загрузке корректируются указатели словаря, цепочки поиска и пр.
Для корректной работы полученного оверлея код должен быть позиционно-независим.
Писалось ради интереса. Интерес пробудился здесь на форуме

Оптимизатор:
Размер подопытных библиотек уменьшился на 16 %.
Сообщение Добавлено: Сб окт 06, 2018 13:21
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Nova-VC

Nova-VC ( Vocabulary Сompile )

Изменения по сравнению с 1.06

Ядро
1. Таблица предкомпиляции отсутствует. Поэтому форт стал меньше в размере.
Вместо этого теперь каждый словарь может навесить свой обработчик на компиляцию (реализовано через доп. поле словаря).
Назначение у этого новшества аналогично таблице.
А именно расширение возможностей и корректировка компиляции.

2. Убрана развертка параметрических слов. Теперь у них нет инлайна, только вызовы.
От этого удалось спастись только VARIABLE (стало создавать инлайн-слова, как и CONSTANT ).
Технически мог от этого спасти и USER, но тогда придётся сильно перетряхивать исходники Новы.

Библиотеки
В соответствии с новой фичей переписаны некоторые библиотеки.
Добавил новые слова для отладки (~er/tools/). К примеру, распечатку стека возвратов (сделано на итераторах).

Оптимизатор
Дождь и ветер таки :D заставили меня засесть за написание столь интересного и местами полезного дополнения к Нове.
Подключается как библиотека. Работает через обработчик компиляции словаря (см. Ядро п. 1).
Оптимизация глазковая.
Что делает сейчас:
    разворачивает параметрические слова;
    оптимизирует условия для IF и WHILE;
    сжимает арифметику ( 10 20 + при компиляции дадут 1 число, а не 2 и код операции сложения);
    оптимизирует операции со стеком возвратов, что весьма актуально для Новы;
    и пр.

На текущий момент размер подопытных библиотек под чутким руководством оптимизатора уменьшился на 13 %.

P. S.
Инструмент для создания правил имеется :D
Сообщение Добавлено: Чт сен 27, 2018 14:00
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Нова 1.06

Новшества:
Создание таблиц предкомпиляции в словарях
Поддержка Си-шной декларации вызова (cdecl)

По поставке:
Добавлены материалы по бектрекингу от М.Л.Гасаненко (перенесены из поставки СПФ)
Добавлен справочник по словам в форт-системе.

Предложения по справочнику можно оставлять здесь http://fforum.winglion.ru/viewtopic.php?f=58&t=3194&p=45741#p45741
Сообщение Добавлено: Сб сен 15, 2018 18:30
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Нова 1.05
Кратко по новшествам:
  • интерпретация командной строки
  • новый механизм инлайна
  • портирована либа-обёртка для MySQL от ~day
  • написан собственный вариант для работы с MySQL

По поставке:
убран СПФ, ЦК на его основе и мои либы к нему


Вложения:
Nova1.05 2018.08.04.7z [92.78 Кб]
Скачиваний: 163
Сообщение Добавлено: Сб авг 04, 2018 23:06
  Заголовок сообщения:  Re: Nova-forth версии  Ответить с цитатой
Нова 1.04

Добавлен обратный вызов.
Определяется так: n CALLBACK: слово какой-то-код ;
где n, это кол-во параметров (в ячейках CELL), которые убираются на обратном ходу.
В каллбек всегда передаётся одно значение - указатель на последний переданный параметр.
Если каллбек был создан в форт-потоке, то для него пользовательские переменные доступны. Если же каллбек не в форт-потоке, то придётся исхитряться самостоятельно.

Добавлены слова для работы с указателем пользовательской области.
TLS!
TLS@
TLS>OS \ сохранить указатель пользовательской области в спец. месте ( FS: 20 CELLS )
OS>TLS \ загрузить значение из спец. места в указатель пользовательской области.
Сообщение Добавлено: Пн июл 23, 2018 16:29
  Заголовок сообщения:  Nova-forth версии  Ответить с цитатой
Нова 1.03

Возможность сохранения наработанной форт-системы. (библиотека ~er\win\save.f)
Форт-система может компилировать саму себя по исходникам (src-self/create-forth.f)

Добавлены слова:
MIN
MAX

\ a1 a2 ... an n b --- a1 a2 ... an n flag
\ проверить элемент b на вхождение в множество, вернуть флаг (-1 да, 0 нет).
SSET?
Сообщение Добавлено: Пн июл 23, 2018 16:14

Часовой пояс: UTC + 3 часа [ Летнее время ]


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB