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

...
Google Search
Forth-FAQ Spy Grafic

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




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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 501
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
И ещё по поводу оптимизации.
Оптимизатор действует подобно вычислению выражений в лиспе

[code=лисп]
(+ 5 (+ 2 3) )

[/code]

[code=форт]
2 3 + 5 +
Или же схематично
( ( 2 3 + ) 5 + )

[/code]

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 501
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Нова, исходники, либы, оптимизатор

В настоящий момент пишу всякие полезные вещи для Новы: оптимизатор, работа со строками, ассемблер.

Всё в архиве.
Оптимизатор кода через таблицу предкомпиляции больше всего "достаётся" операциям со стеком возвратов и ветвлениям (IF и WHILE).
Т.к. оптимизатор будет расти, то в шаблонички можно зашить условную ООПу т.е. указать условие-фрагмент, которое будет определено позднее. Ещё не использовал это в коде, но наверно придётся.

Строки располагаются в стеке возвратов, либа не окончена. В отличие от версии для СПФ, код полностью высокоуровневый. Приведением череды POSTPONE-ов в божеский вид занимается оптимизатор, если его подключить.

Развитие Новы:
Планируется при запуске читать файл инициализации форта, чтобы что-то подключить заранее, а также чтение командной строки.

Изменить работу параметрических слов - чтоб через CREATE-CODE работали. Зачем? Перераспределить нагрузку на компилятор.
Пример опр. слова:
Код:

: (DOES>CONST)
@ STATE @ IF LIT,
;

: CONSTANT
HEADER
['] CREATE-CODE COMPILE,
['] (DOES>CONST) ,
,
IMMEDIATE
;



В итоге переменные типа CONSTANT VARIABLE VALUE станут компилирующими словами немедленного исполнения.

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


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

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

Теперь займёмся портированием СПФ-ских либ. К примеру для работы с COMом.

Оптимизатор тоже потихоньку развивается - обрастает шаблончиками.

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


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 818
Благодарил (а): 3 раз.
Поблагодарили: 32 раз.
Victor__v писал(а):
Теперь займёмся портированием СПФ-ских либ.

Не рассматривался ли вариант ещё и возможности совместимости системы с Win32Forth?

P.S. "Заход" на совместимость запуска Win32Forth кода, в рамках SPF4, уже предпринимался ранее.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 501
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
KPG писал(а):
Victor__v писал(а):
Теперь займёмся портированием СПФ-ских либ.

Не рассматривался ли вариант ещё и возможности совместимости системы с Win32Forth?

P.S. "Заход" на совместимость запуска Win32Forth кода, в рамках SPF4, уже предпринимался ранее.


С этой форт-системой знаком на уровне "она есть".
Что предлагается портировать из WinForth ?
Насчёт совместимости вопрос достаточно интересный...
В планах пока портировать и написать:
COM, работа с мускулем, поддержка HTTPS, плав. точка, функции хеширования, сортировки

Ну и гуй, когда калбеки разработаю.

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


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 818
Благодарил (а): 3 раз.
Поблагодарили: 32 раз.
Victor__v писал(а):
С этой форт-системой знаком на уровне "она есть".
Что предлагается портировать из WinForth ?
Насчёт совместимости вопрос достаточно интересный...

Хотя бы возможность запустить примеры из её дистрибутива вплоть до её IDE.
Win32Forth for graphics and parallel processing. с некоторыми программами для неё.
Базис использования Scintilla.dll некоторое время дорабатывал в WinForthIDE.

P.S. Ещё у меня остался, например, и проект на базе Win32Forth ff303 (мульти кросс Форт система для контроллеров) адаптированный для PDP-11 процессоров (близко к MSP430). Совместимость версий
Win32Forth не такая хорошая (поэтому он собирается для 6-ой версии Win32Forth) . Когда переносил основу функционала Протого редактора узлов с Win32Forth на SPF4 были некоторые шероховатости (как разная последовательность параметров для API функций Windows).
Для примера можно и такой проект привести Cweed is a C source file weeder written in Win32Forth.
Начальная дружественность к Форт-новичкам у Win32Forth несколько лучше чеи в SPF4.
По проектам с Win32Forth "участием" может ещё кто что нибудь добавит. :)

Какие дальнейшие выводы? :shuffle;


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 501
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Посмотрим.
В приоритете собственные наработки и перенос СПФ-ских творений, коие успели пригодится.

Нова-форт: исходники, либы, оптимизатор

В архиве работает: стек. манипулятор (5.1), лок. переменные, создание строк на стеке возвратов, ассемблер и по мелочи.

Оптимизатор работает, пока в процессе. Потом засуну его во временный словарь.

Если его подключить заранее, то можно неплохо съэкономить в некоторых местах. К примеру в R:STR выделение памяти на стеке -64 RP@ + RP! вырождается в одну инструкцию.

По Нове.
Изменил версию: 1.01
Причина: поменял механизм компиляции слов, сделал чуть логичней. Появился служебный флаг "я параметрическое слово". Как несложно догадаться, им автоматически метятся константы, векторы, переменные и пр. Плюс 4-5 мелких исправлений. не все их документировал. К примеру слово RF^ стало инлайн-словом, как и планировалось.

Размышления:
Использовал в оптимизаторе своеобразный аналог CASE. Фактически, обёртка произвольной цепочки IF-ELSE
Загвоздка в том, что на это меня надоумило сообщение фиг знает откуда у суперскобке в Лиспе :D
Впрочем, вещь полезная. Чувствую оптимизатор буду портянками писать.

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 501
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Исходники Новы

03.04.2018
Добавлено слово VOC-THREADS константа кол-ва цепочек поиска в форт-системе.

31.03.2018
Для ускорения трансляции слово PARSE-NAME переписано на манипуляторе.
Пофиксена проблема с комментарием \ т.к. не работал одиночно.
Переписана трансляция консоли.
Убран из пользовательской области буфер консоли. Теперь буфер создаётся автоматически при использовании трансляции консоли.
Убрано слово TOP-ERROR:

По портированию
Портирована быстрая сортировка ~pinka
В настоящий момент портируется либа для работы с COM от ~yz.
Пишется слой совместимости.
Чуть переписаны лок. переменные, дабы портируемые либы не переписывать.

Написана обёртка WINAPI: Только вчера вечером писал. В отличие от Stdcall: вычисляет кол-во требуемых переменных в момент первого вызова. А после начинается самомодификация кода в месте вызова.
(winapi-code) заменяется (stdcall)

Остальное в моём ЖЖ
https://viktor-ra.livejournal.com/62321.html

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 501
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Занимался преобразованием строки в FLOAT

вот что получилось:
Код:
\ преобразовать строку.
\ вернуть 2 числа как дробь ( 12.34 -> 1234 / 1000 )
\ и флаг успеха 
: str->fl \ A U -- N/ /N TRUE| FALSE
S" ," SPLIT
0= IF
   S" ." SPLIT
   0= IF 2DROP FALSE EXIT THEN
THEN

\ S" 12,34" --> S" 12" S" 34"
STR>NUM THROW >R
\ цикл: найти нужное 10 в степени, дабы поделить потом
   10
   BEGIN
   R@ OVER > WHILE
   10 *
   REPEAT
   >R

STR>NUM THROW
R@ * 1 RPICK +
R>
RDROP
TRUE
;

\ обработчик
: NOTFOUND.,
str->fl
FALSE = IF 0 EXIT THEN
SWAP
int>F \ перенести целое число (32) на стек float
F/int  \ поделить число на стеке float  на целое число, что на стеке данных
STATE @
IF
FLIT,
THEN
-1
;



Часть слов для работы плав. точки написана: операции, "константы" и пр. У меня пока пашет асм, буду всё в коды переводить.
Осталось научиться печатать FLOAT-значения.

Стоит ли ещё разбирать строки с экспонентой?
Стоит ли ещё дополнительно заморачиваться поддержкой исключений на плав. точке?

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


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

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


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

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


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

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