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

...
Google Search
Forth-FAQ Spy Grafic

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




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

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

Если это шутка, то не смешно.
Если имеете ввиду что-то другое, поясните

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: моя форт-система, которая потихоньку пишется
СообщениеДобавлено: Сб дек 16, 2017 18:20 
Victor__v писал(а):
Если это шутка, то не смешно.
Это не шутка.
Возможно, ошибка (раз)архивирования...


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
gudleifr писал(а):
Возможно, ошибка (раз)архивирования...

Возможно. Тот же самый архив перезалил. Теперь всё хор.

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


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

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Victor__v писал(а):
gudleifr писал(а):
Возможно, ошибка (раз)архивирования...

Возможно. Тот же самый архив перезалил. Теперь всё хор.

Ну не знаю, я в 15:26 скачал - всё было в порядке.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Нашёл достаточно ошибок в своём парсере.
Во первых, почему не работал цикл интерпретации?
Так с точки зрения слова PARSE-NAME словом является ВСЁ вплоть до пробела или конца источника.
Вот. В конце источника-консоли есмь перевод строки и он учитывался словом.
Пришлось переписать слово PARSE-NAME . Теперя словом является всё, что ограничено символами меньше пробела.
Ещё не переписал слово PARSE . С ним тоже весело. Особенно строки из входного потока брать. Всё берётся, работает. Только не корректно.
И возникает вопрос. Как вообще переписать это слово?
Чтобы оно работало вплоть до встречи символа или конца источника, или сюда ещё приплюсовать ограничитель вида перевод строки?
Будем думать, как это всё логичней и правильней провернуть.
Почему рос стек данных в режиме интерпретации?
Во всём виновато слово SFIND . Мне уже было лень разбираться и я просто переписал его вместе со словом VOC-TH , последнее стало проще - теперь это определение номера треды от хеш-значения т.е 3 AND.
И итого поиск ведётся по всем словарям, но номер цепочки для поиска у них одинаков.
Потом чуть ускорю поиск ( на манипулятор пересажу несколько частей ).
Касательно роста стека есть ещё заминка - появляется значение при создании слова и/или слов. статьи.
Ещё не разбирался в этом.

Ещё навёл марафет в словах .SN и OK(std) . Теперь вывод стека данных симпатичный.

Кодогенерация не работает (возможно я просто не доинициализировал словарь FORTH вот он и выкидывает).
Предкомпиляция не работает (вносил изменения в строй.версию. Возможна, и некая ошибка поведения т.е. иначе надо)

Трансляцию др. источников, работу стека окружений и т.д не тестировал.

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Исходники моего форта
Обновлено 15.01.2018
Как затестить?
запускаем СПФ (в архиве лежит) и вводим в нём src2\test-forth.f
Запустится образ моего форта.
Можно поиграться.

Что по финтифлюшкам?
Числа можно записывать как от тек. системы счисления так и от 16-чной -- 0x23 к примеру или -0x23.
Можно писать символы, обрамляя из в одинарную кавычку -- 'h' 'e' .
Некоторые символы уже "забиты" в словарь -- BL 'TAB' 'CR'
Возможно исполнять слово, указывая путь к нему из словаря -- FORTH::VOC1::VOC2::TEST
Как получить xt от такого слова -- ' FORTH::VOC1::VOC2::TEST
Можно указывать папки, где следует искать файлы с пом. стека окружений.
Файл дополнительно ищется в последней упомянутой (явно или неявно) директории.
Автоподключение файлов имеется, достаточно написать название файла.

Прочее.
Если файл короткий, менее кб, то он транслируется целиком, раньше такой льготы минималистам не было.
Мне так и не удалось переписать SEARCH, поэтому я скомпилил его из СПФ как есть.
Пофиксил проблему, когда в файле обнаруживалась ошибка и он не открывался другими программами.

Обновил документацию, также там справка по некоторым словам.

Думаю всё-таки засовывать строки в режиме интерпретации в стек возвратов в интерпретаторские закрома.
Возможна ситуация с evaluate в котором есть S" . Если как-то не экранировать парсинг, то строка-источник может испортиться.
А если ещё использовать экранируемые символы в S", то ситуация обостряется сильнее.


Форт-система предоставляется "как есть", скачав материалы вы берёте на себя все риски.
На всякий случай написал.

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


Последний раз редактировалось Victor__v Пн янв 15, 2018 22:45, всего редактировалось 1 раз.

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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Дополнительно в архиве либы ДЛЯ МОЕГО ФОРТА
Подробнее http://fforum.winglion.ru/viewtopic.php?f=2&t=3141&p=44592&sid=f9c4d3174cb9ce148cdd5844565db6dc#p44592

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Добавил работоспособные либы:
структуры
постфиксный ассемблер под интел
стековый манипулятор
разбор CSV

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


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

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

М да.
Уже нашёл ошибку. Дизассемблер подсобил.
У меня все структуры управления так ,как перевязка адресов идёт, используют адресацию системы-донора (СПФ).
А вот, слово BEGIN было досадным исключением из правила. Поправил.

Теперь тестовый запуск с перевязкой работает.

Мораль:
в1) Если ошибка не находится, долби её до победного и знай, что когда остановишься, то она будет на расстоянии вытянутой руки.
в2) Если ошибка не находится, забей и отдохни. Потом вернёшься и посмотришь свежим взглядом.

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Всё :< форт-система написана.
Две недели наскоками мучился с PE-форматом.
Наконец-то удалось откомпилировать и запустить.
Тут полностью всё что можно в том числе и мои наработки под СПФ. Много весит.
Полный набор

Тут форт и мои либы под него (не все из них закончены).
Форт-система и наработки

А тут только форт-система для желающих поиграться.
Исполняемый файл

Сама форт-система ( её зовут NOVA ) весит примерно 33 килобайта. 12 килобайтов в EXE оставлено под расширение системы.

В самих исходниках есть мусорные файлы, попрошу лопатой не бить :)

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


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

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Хм, не хватает только
Код:
1 Stdcall: ExitProcess KERNEL32.DLL
: BYE 0 ExitProcess ;
:)
А где у тебя стековый манипулятор? А то что-то не могу найти :shuffle;


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

Зарегистрирован: Пт янв 06, 2017 14:57
Сообщения: 365
Благодарил (а): 17 раз.
Поблагодарили: 1 раз.
Нашёл: \.\~er\stacker\


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
_KROL писал(а):
Хм, не хватает только
Код:
1 Stdcall: ExitProcess KERNEL32.DLL
: BYE 0 ExitProcess ;
:)

Никогда не пользовался этим словом. В принципе, без него жить можно. Но согласен, что немного не хватает :)

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


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

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

Код:

~er\asm\assembler.f
ALSO ASSEMBLER

: (ENT:-CODE) R> ;

\ для задания условий-фрагментов кода
\ ENT: 'point -- ??? 'point -1| 0
: ENT:
HEADER
['] (ENT:-CODE)  COMPILE,
-1 STATE !
;

\ перебрать все условия-фрагменты и выдать сопутствующие данные, указатель на уже прошаренный код
\ и шаг, на котором условие не сработало или последний шаг
\ xt: 'point -- ??? 'point -1| 0
: >OPT \ xt1 xt2 .. xn n -- ??? 'point iter
N>R
HERE >R    \ 'point
0 >R         \ iter   
BEGIN
2 RPICK WHILE
1 RPICK
3 RPICK EXECUTE
0= IF 2R> \ 'point iter
      R> CELLS RP@ + RP! EXIT
   THEN
RP@ 1+!
RP@ CELL+ !

2R> R> 1- RDROP >R 2>R
REPEAT
2R>
RDROP
;

\ тут условия фрагменты
ENTITY.F

\ правила
EVENTS\ARIFMETIC.F
EVENTS\MEMORY.F



Одно из условий
Код:
CREATE (NUM)
EBP CELL NEGATE LEA+-
[EBP] EAX MOVr-r
EAX 0 MOVr-im

HERE (NUM) - CONSTANT (NUM).S.all
(NUM).S.all CELL- CONSTANT (NUM).S.code


ENT: NUMBER \ 'point -- num 'point -1|0
>R \ point
R@ (NUM).S.all - (NUM).S.code
(NUM) (NUM).S.code COMPARE
IF RDROP 0 EXIT THEN

R@ (NUM).S.all - (NUM).S.code +
@
R> (NUM).S.all -
-1
;



И пример правила

Код:
\ оптимизация операции над двумя числами
: arifmetic_opt2
SP@ >R
NUMBER NUMBER 2 >OPT
2 <> IF R> SP! EXIT THEN
RDROP
DP !
ROT
EXECUTE LIT,
DROP
&IMMEDIATE ['] NOOP
EVENT-EXIT
;

' +       ' -       ' /       ' *
' MOD    ' OR       ' XOR    ' AND

8 S" AR_2" NEW-GROUP
' arifmetic_opt2 S" AR_2" ->EVENT-GROUP



Попробовал оптимизировать сам оптимизатор по исходному коду. Не получилось :o. Видите ли, таблица предкомпиляции была написана так, чтобы отлавливать дубляжи и выдавать исключения при их обнаружении. В общем, с таблицей предкомпиляции "перестарался" 8)

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


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

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

Найдены мелкие косяки.
слово TO
предкомпиляция
Переписана развёртка USER-слов

В случае ошибки выводится дополнительная информация. Т.к. Нова это форт-система слегка откатная т.е. восстанавливающая своё состояние, то и дополнить информацию об вылете без правок исходного кода проблематично. По этому выводится:
код ошибки,
последнее определённое слово,
система счисления,
значение STATE

В настоящее время работаю над оптимизатором для Новы.
Добавлен ряд правил.
Также оптимизатор ведёт лог.
Для теста работоспособности подопытным кроликом является стековый манипулятор. ~ER\OPT\TEST.F

В настоящий момент код становится меньше на 1/12 . Наибольшую долю оптимизаций, на мой взгляд, составляют оптимизации связанные IF.
После прогона и теста оптимизатора, планируется запихнуть его во временный словарь.

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


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

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


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

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


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

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