Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт дек 11, 2018 05:13

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Nova-forth версии
СообщениеДобавлено: Пн июл 23, 2018 16:14 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Нова 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?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova-forth версии
СообщениеДобавлено: Пн июл 23, 2018 16:29 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Нова 1.04

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

Добавлены слова для работы с указателем пользовательской области.
TLS!
TLS@
TLS>OS \ сохранить указатель пользовательской области в спец. месте ( FS: 20 CELLS )
OS>TLS \ загрузить значение из спец. места в указатель пользовательской области.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova-forth версии
СообщениеДобавлено: Сб авг 04, 2018 23:06 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Нова 1.05
Кратко по новшествам:
  • интерпретация командной строки
  • новый механизм инлайна
  • портирована либа-обёртка для MySQL от ~day
  • написан собственный вариант для работы с MySQL

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


Вложения:
Nova1.05 2018.08.04.7z [92.78 Кб]
Скачиваний: 135

_________________
Цель: сделать 64-битную Нову под Винду
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova-forth версии
СообщениеДобавлено: Сб сен 15, 2018 18:30 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Нова 1.06

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

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

Предложения по справочнику можно оставлять здесь http://fforum.winglion.ru/viewtopic.php?f=58&t=3194&p=45741#p45741

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova-forth версии
СообщениеДобавлено: Чт сен 27, 2018 14:00 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
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

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Nova-forth версия VC 1
СообщениеДобавлено: Сб окт 06, 2018 13:21 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Nova-VC

обновление 1

Ядро

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

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

Оптимизатор:
Размер подопытных библиотек уменьшился на 16 %.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova-forth версии
СообщениеДобавлено: Вс ноя 04, 2018 13:15 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Nova-VC

обновление 2

Ядро:

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

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

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

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

Основное направление действий сейчас:
JSON, HTTP-сервер, оптимизатор, дизассемблер, причёсывание исходников.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova-forth версии
СообщениеДобавлено: Сб дек 01, 2018 13:02 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 676
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
Nova-VC
обновление 3

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

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

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

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

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

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

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

Почти готов дизассемблер. Уже можно пользоваться.

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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