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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 97 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Вт окт 31, 2017 23:27 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
В стеке окружений хранятся строки для поиска файлов.
К примеру, написал S" C:" >ENVIR , то при подключении какого-нть файла будет проверяться и этот путь.

Вот текущая реализация. Код под чистый СПФ не знаю где.
Цитата:
USER-CREATE ENVIR-SPACE 300 USER-ALLOT

USER ENVIR0
USER-VALUE ENVIR-P

\ положить строку на стек окружений
: >ENVIR \ addr u --
ENVIR-P @ IF ENVIR-P ASCIIZ> + 1+ TO ENVIR-P THEN
>R ENVIR-P R@ MOVE
ENVIR-P R@ + RP@ !
R@ 1- C@ '/' <> IF '/' R@ C! 0/R&i THEN
0/1#22x1&2<

;

: ENVIR-DROP
ENVIR-P DUP 0!
1-
BEGIN
DUP C@ WHILE
1-
REPEAT
1+ TO ENVIR-P
;






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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Вт окт 31, 2017 23:30 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Victor__v писал(а):
...
Спасибо за разьяснение!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Вт окт 31, 2017 23:43 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
_KROL писал(а):
Victor__v писал(а):
...
Спасибо за разьяснение!


Всегда пожалуйста

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Ср ноя 01, 2017 00:37 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Victor__v писал(а):
В стеке окружений хранятся строки для поиска файлов.


А не проще ли сделать универсальные стеки строк?
И присваивать их например: стек окружений, стек логов, стек ошибок итд.

_________________
Линукс решает, винда глотает.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Ср ноя 01, 2017 09:09 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Универсальные это создающие слова необходимые под стек строк?
Можно конечно, но зачем?
Стек логов? Это скорей лучше в файл записывать.
Стек ошибок?
Что под этим понимается?
В моём понимании это цепочка-список. Которую образуют CATCH и THROW .

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Пт ноя 03, 2017 21:17 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Ещё мысли.
Работа в форт-системе видится мне в таком ключе: Всё что нужно в кодофайле, всё что промежуточно и не нужно за кадром.
Из этого вытекает решение, на мой взгляд, наиболее оптимальное - использование временных словарей.
Нужны фичи? Лок.переменные, адресация исходников, стековый манипулятор, оптимизатор, немедлятки и инлайны? Не вопрос. Подключаем временный словарь.

В конечном итоге, стек контекста превращается в набор различных объектов. Зоопарк.
Возникающие проблемы:
Необходимо экранировать все служебные слова в каждой библиотеке-врем.словаре
Как? Вот что мне приходило в голову.
Теневая цепочка в структуре словаря, в которой не ведётся поиск. Проблема возникает, когда нам нужно как-то обработать ВСЕ слова в т.ч. и в теневой цепочке. Эту идею я отмёл, как имеющую в себе противоречия.
Использование флагов. Мне раньше думалось, что не плохо было б иметь слово для перевязки слова из одного словаря в другой.
Пусть у нас будет флаг shady ( теневой ), которым мы помечаем слова, которые в свою очередь будут перевязаны в указаныый словарь.
Код:
' VOC-LOC-SERVICE SHADE-CURRENT

Как-то так.
На мой взгляд, у последнего варианта затраты минимальны, а сокрытие надёжно.
След. проблема.
Стек контекста не бесконечен.
Целесообразно временные словари как-то компоновать в связки, дабы они меньше в стеке светились.
Как вариант, инструментарий по пересборке уже скомп.врем.словарей. Допустим, слово помечено флагом INLINE так пусть всё слово перекомпилируется в соседний врем.словарь. М-да, полумера.
К тому ж, у врем словарей есть ещё весомое преимущество - помимо функционала, коий в них можно засунуть, память у них отлично подходит под различные задумки с памятью. Хоть хранение имён лок.переменных с их последующим удалением из словаря. И кодофайл не портится и память в юзверях не выделяется.
Что ещё можно придумать?
Пусть в стеке контекста помимо самого контекста будет и указатель на массив связанных (подчинённых словарей). Тогда врем.словари по какому-то признаку можно скомпоновать. Дополнительно необходимо внести ещё одно поле в словарь - как удалять.
Мудрёно, сразу усложняются поиск и простейшие операции с стеком.
Можно поступить чуть попроще - поле, где содержится указатель на массив подчинённых словарей. Со стеком уже проблем нет. Поиск также усложняется, даже сильнее.
Итого в стеке будут словари, в которых, (возможно) будет указатель на свой "массив контекста". А это ж опять итерации писать.
К тому же необходимо учитывать возможность вложенности.
Это "раздревление" словарей усложняет не только поиск, хрен с ним, пусть рекурсия будет, но и удаление врем. словарей.

Как-то так.
Всё графоманство и заметки на будущее закончил

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Пт ноя 03, 2017 23:21 
Не в сети

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Тогда у меня такой вопрос: если они временные, то когда они будут подключаться/"отключаться", если у нас после
совершении сборки система завершает поток и передаёт управление внешней ОС? Или ты хочешь сказать, что в
ЭТОМ месте они подключены, а перед ЭТИМ мы и их отключаем и загружаем уже другие (если надо)?
Для чего это понадобится? Мне так это напоминает почему-то bat-файлы: все заданные (обычно)
переменные окружния в них временные. Ну так это для моей идеи - ФортОС...

P.s. Кстати, а в чём смысл монтирования словарей у mOlegа? А то я посмотрел, но так и не понял.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Пн ноя 06, 2017 18:03 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
_KROL писал(а):
Тогда у меня такой вопрос: если они временные, то когда они будут подключаться/"отключаться", если у нас после
совершении сборки система завершает поток и передаёт управление внешней ОС? Или ты хочешь сказать, что в
ЭТОМ месте они подключены, а перед ЭТИМ мы и их отключаем и загружаем уже другие (если надо)?
Для чего это понадобится? Мне так это напоминает почему-то bat-файлы: все заданные (обычно)
переменные окружния в них временные. Ну так это для моей идеи - ФортОС...

P.s. Кстати, а в чём смысл монтирования словарей у mOlegа? А то я посмотрел, но так и не понял.


Тут по-разному.
Разберём по пунктам:
1) Как это вообще делается.
Вкл/выкл врем.словарей может осуществляться вручную. В СПФ так. Я тоже не стал мудрить.
создание и добавление в контекст
Код:
TEMP-WORDLIST ALSO CONTEXT !

Удаление из контекста и освобождение выделенной памяти.
Код:
CONTEXT @ PREVIOUS FREE-WORDLIST

Возможен вариант с самоудалением врем.словаря после использования. Я такое делал.
2) Врем.словари располагаются в хипе, на крайний случай где-то в конце кодофайла.
После сборки форт-системы врем.словари нигде не отсвечивают ( не должны отсвечивать ) А их освобождением занимается ОСь. Тоже самое и при ЦК.
3) Назначение врем.словарей ( в моём понимании ) расширять функциональность для требуемой задачи и при этом не отсвечивать в рабочем пространстве ( кодофайл ) ссылками и указателями на свой код. Если на каком-то отрезке пути есть понимание, что либа уже не нужна, особождаем себя от её присутствия.

Насчёт монтирования словарей лучше спросить у mOleg'а . Он же ж Форк написал.
В Форке ещё работа со словарями реализована иначе.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Ср ноя 08, 2017 16:17 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Ещё мысли.
Поскольку словарей может быть много, целесообразно как-то уменьшить зону поиска слова.
Как вариант, доп.поле в словаре для доп.поиска слова.
Это очень похоже на идею mOleg'а о том, что поиск должен вестись самим словарём.
Однако, на мой взгляд это не должно являться обязательным условием. Поэтому мы пойдём другим путём
Итак, что принимает слово доп.поиска
\ addr u hash --
А что оно должно возвращать?
\ -- addr u 0| ffa@ xt| addr u hash
это как минимум.
Необходимо обеспечить такую гибкость.
Обеспечим это безусловными переходами.
Т.к. так гибче.
Легче высчитать точку выхода, можно переступить через вызов в коде и пр.
Код:
: SFIND
...
R@ \  тек.просматриваемый словарь
>findFA @ >GOTO
HASH-IN-VOC
...
;

Слово доп.поиска может ускорить поиск, иногда существенно.
В холостом режиме : anyFIND SFIND->P1 >GOTO ; С учётом предкомпиляции-оптимизации затрата на время ~10 тактов.
К примеру, в словаре все слова начинаются на букву R.
Тогда уточнитель будет иметь след.код:
Цитата:
: R?false-exit \ a u hash -- a u hash| a u 0 IP:+5
2 PICK \ a u hash -- a u hash a
C@ 'R' 0= IF
DROP 0
SFIND->P1 >param \ минуем вызов HASH-IN-VOC
>GOTO
THEN
SFIND->P1 >GOTO

;

Можно ещё понасобирать всяких служебных слов, создать массив с хешами и пр, отсортировать. И в FindFA засунуть бинарный поиск по этому массиву.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Пн ноя 27, 2017 12:28 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
FPU при старте форт-системы и/или потока надо инициализировать или эта процедура морально устарела?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Сб дек 02, 2017 22:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
FPU при старте форт-системы и/или потока надо инициализировать или эта процедура морально устарела?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Сб дек 02, 2017 23:15 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Hishnik писал(а):
Victor__v писал(а):
FPU при старте форт-системы и/или потока надо инициализировать или эта процедура морально устарела?

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

Переформулирую. Могу я, написав свою форт-систему, положить на стек с плав.точкой число и чтобы система не вылетела без инициализации FPU ?

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Сб дек 02, 2017 23:50 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Текущее состояние.
Добавлен файл SRC2\TEST-FORTH.F
Как можно догадаться, файл предназначен для отладки и тестового запуска моего форта в СПФ.
В этом файле инициализируются также указатели на getprocaddress loadlibrarya т.к. нужно для проверки параметрических слов под стандартный вызов.
Тут же нашёл косяк в сервисной части и исправил, перемудрил малясь раньше с поддержкой вызовов. Теперь работает штатно.
Нашёл ошибку в слове для определения цепочки поиска в словаре. В сервисной части работала нормально, а в стоящийся нет. Проблема заключалась в том, что в строй. форте реализация на асме и я забыл написал вместо AND EAX 3 AND EAX 0 :lol:
Вот что значит писать в машинных кодах.

Сейчас работаю над поиском слов в словаре. Ну никак не хочет корректно работать. В чём проблема пока не разобрался. При этом проблема поиска и по хешу и по строке.


По планируемым изменениям.
Начал менять природу констант. Теперь это машинный код, который инлайнится. Без параметрического CONST-CODE.
Почему я решил от этого отказаться?
Как ни странно сподвигло меня на это изучение реализации бектрекинга от Profit'а.
У него были замечены "странные" решения.
Цитата:
BACK FALSE TRACKING

Цитата:
(: FALSE ;)

Скорее всего эти выверты были обоснованы параметризацией констант в СПФ. Если их использовать напрямую в бектрекинге, то вместо одного вызова будет два ( плюсуется CONST-CODE ).

Переписал слова необходимые для перебора всех слов во всех словарях.
Теперь это не функции требующие xt, а слова требующие остатка кода.
Примечательно, что алгоритм прохода по всем словарям изменился - алгоритм стал неявно рекурсивным.
Добавил комментарии по некоторым исходникам.
Добавил также некоторые соглашения. Короче, всё интересное можно почитать в SRC2\DOCS

Как отлажу поиск в своём форте, выложу очередную порцию исходников.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Вс дек 03, 2017 00:06 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Переформулирую. Могу я, написав свою форт-систему, положить на стек с плав.точкой число и чтобы система не вылетела без инициализации FPU ?

Сейчас еще раз проверил - FNINIT стоит после выделения памяти для системы (на старте) и внутри обработчика ABORT. У задачи будет свой контекст FPU, но сбрасывать на старте - просто признак хорошего тона.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Вс дек 03, 2017 00:29 
Не в сети

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

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


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

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


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

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


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

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