Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 02:38

...
Google Search
Forth-FAQ Spy Grafic

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




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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Нова 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
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Нова 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
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Нова 1.05
Кратко по новшествам:
  • интерпретация командной строки
  • новый механизм инлайна
  • портирована либа-обёртка для MySQL от ~day
  • написан собственный вариант для работы с MySQL

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


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

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

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

обновление 1

Ядро

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Посмотреть сложночитаемый код сгенерированный препроцессором можно в файлике

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


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

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

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

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

Портирование примитивов на 64-бита идёт медленно, ибо лень

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


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

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

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

По наработкам
  • Матрицы
  • Многомерные массивы
  • Реализация односвязного списка
  • Создание стека в памяти
  • Сопрограммы (вспомнить бы, где хотел их применять)
  • Создание отложенных вызовов API-функций

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
NOVA-CDW
https://vk.com/doc189457568_507281731?hash=61cd09e412966ad19c&dl=c2e423c37cb1d1b30d

Что изменилось:
Раздельное хранение кода, данных и словарных структур.
Возможность использования дополнительных полей кода (задаётся словом ALTERNATIVE: вызывается словом ALT: )
Меньше параметрических слов.
Векторы, переменные теперь инлайнятся. Для пущего хардкора компилирующий код этих слов обработан препроцессором.

По наработкам. Причёсаны в поставке далеко не все.
Что работает:
Локальные переменные: переписаны с чистого листа, код стал понятней
Препроцессор
Строковые библиотеки
Реализация ООП
и пр.

Из портированного
~yz/lib/automate.f компилируется несколько криво, из-а того, что автор библиотеки вероятно подразумевал, что CONTEXT и CURRENT будут указывать на один и тот же словарь. В #СПФ такой же лаг.
~yz/lib/winlib.f компилируется, но где-то засели ошибки. Тестовый пример запускается, но через раз, а после всё равно #вылет.

В поставке также IUP.DLL и тестовый пример для компиляции GUI-приложения с участием этой внешней библиотеки

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Nova-forth версии
СообщениеДобавлено: Чт июн 27, 2019 12:41 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Что работает:

А не подумать ли большой группой заинтересованных личностей над библиотекой тестов, подходящих для широкого круга Фортов? Чтобы там были ну совсем уж очевидные вещи, которые, тем не менее, показывали бы на практике что-то работающее. Можно и в виде ТЗ, если там есть специфичные для реализации вещи. Что-то уровня "тест, демонстрирующий вычисление суммы элементов массива" и прочее в таком роде.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Хм, не знаю.
У Новы несколько поменялась архитектура, а я за это время использовал в коде наработок несколько хаков.
К примеру, полагаясь, что словарь это параметрическое слово. А сейчас это далеко не так. Плюс реализация расширения FROM/TO сменилась.

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


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Хм, не знаю.
У Новы несколько поменялась архитектура, а я за это время использовал в коде наработок несколько хаков.
К примеру, полагаясь, что словарь это параметрическое слово. А сейчас это далеко не так. Плюс реализация расширения FROM/TO сменилась.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу 1, 2, 3, 4  След.

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


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

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


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

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