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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 89 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Quark
СообщениеДобавлено: Чт май 24, 2007 23:59 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Итак, вниманию сообщества предлагается проект Quark. Что это такое? Quark - это диалект Форта (по сути, альтернативное название - Quark-Forth), предназначенный для простого встраивания в более крупные проекты. Называется он так потому, что похож на реальный кварк - гипотетическую очень-очень маленькую частицу, из которой состоят более крупные элементарные частицы - протоны, нейтроны... Сам по себе кварк в природе не встречается. Аналогично, quark - это dll, которая, таким образом, не может работать самостоятельно - только в составе более крупного проекта. Интерфейс этой dll очень прост и содержит следующие функции.

Код:
Init - начальная инициализация dll
Evaluate(str : pointer_to_ASCIIZ) - транслировать строку, заданную указателем, возвращает 0 при успехе или номер символа, при трансляции которого произошла ошибка

GetStack  - вернуть адрес начала стека
GetDepth - вернуть глубину стека
GetCode - вернуть начальный адрес словаря
GetData - вернуть начальный адрес данных
GetScreen - вернуть начальный адрес виртуального экрана

Стек quark расположен в памяти, что несколько снижает производительность, однако существенно упрощает разработку и повышает устойчивость кода. Также имеются стеки control-flow, циклов, стек загружаемых файлов (в настоящее время доступны 32 уровня вложенности транслируемых файлов).

Quark поддерживает внутренний виртуальный экран - область памяти, имитирующую экран 2048x2048x32 bpp. Слова работы с графикой и текстом работают с этой областью, предоставляя доступ к ней оболочке, в которую загружен quark. Оболочка ответственна за корректное отображение экрана. В то же время, способ вывода виртуального экрана не зависит от содержимого quark, и может быть использован как вывод через GDI, так и более производительные DirectDraw или OpenGL.

Основная идея проекта заключается в том, что сочетание форт-машины в dll и внешней оболочки, написанной с помощью RAD-инструментов, позволяет пользоваться преимуществами и Форта, и ЯВУ. Оболочка может реализовать требуемый интерфейс, а доработка, настройка и "склейка" программ выполняется с помощью форт-машины.

Основные особенности:
    Машинный код (flat assembler) размером 23 кб.
    Динамически изменяемые размеры памяти кода и данных
    Подключение других dll (LoadLibrary, GetProcAddress)
    Плавающая точка с использованием сопроцессора
    Словари по стандарту '83
    Быстрый доступ к виртуальному экрану
    Слова для свертки с использованием расширения SSE
    Векторизация основных словарных статей


Примером оболочки является проект Proton
Изображение
Показанная оболочка обеспечивает редактирование исходных текстов (с подсветкой синтаксиса и нумерацией строк), вывод виртуального экрана, строку консоли с быстрым исполнением введенной строки, просмотр статистики по размеру кода и данных (панель слева), просмотр стека, слов и переменных, а также выполнение форт-программы построчно (с остановом после каждой строки) или до места установки курсора (кнопки в панели управления). Основное назначение оболочки Proton - рабочее место исследователя в области обработки экспериментальных данных, математическое моделирование физических процессов, кросс-трансляция для Форт-процессоров на базе ПЛИС.

Roadmap

Quark предполагается полностью бесплатным для членов RuFIG и подписчиков форума :) В то же время, планируется регистрация этого продукта с получением соответствующего охранного документа, поэтому свободный доступ ожидается с момента регистрации поступления заявки в ФИПС.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 12:26 
Не в сети
Аватара пользователя

Зарегистрирован: Пт май 05, 2006 06:19
Сообщения: 192
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
замечательная наверно вещь, а библиотеку консольного текстографического вывода на этой вещи может кто сделает ?

_________________
SPF


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 12:32 
А документация по нему подробная? :shuffle;


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 13:31 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
А какое отношение имеет lazarus к оболочке Proton? Не уж то она на фрепаскале писанна?

_________________
Меня нет, не будет и не было.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 14:27 
Не в сети
Administrator
Administrator
Аватара пользователя

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

На виртуальный экран можно выводить нормальный текст, знакогенератор встроен в dll.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 14:27 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Традиция обязывает писать подробно! :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 14:29 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Pretorian писал(а):
А какое отношение имеет lazarus к оболочке Proton? Не уж то она на фрепаскале писанна?

Ага, на нем :) Там удобный SynEdit. Правда, размер exe зашкаливает за все разумные пределы, уж не знаю, что тут делать. Но денег на Delphi я сейчас выделить не могу (тем более фактически ради одного проекта), а предложение "пойти на рынок и купить диск" принципиально считаю неуместным. Есть и свободные инструменты - lazarus, fasm.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 21:56 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
А вот так выглядит редактор и результат работы Quark-а по вызову WinAPI.
Изображение


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 30, 2007 00:00 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Еще немножко скриншотов...
Настроили панельку: :pilot2;
Изображение
Теперь правой кнопкой мыши нажимаем на одну из вновь созданных ToolButton-ов и.... :writer;
Изображение
А теперь жмем кнопочку и видим.... :aaa;
Изображение[/img]


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 30, 2007 00:39 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
А системы счисления для показа переменнных лучше сразу две! ;) Или 3 и задавать приоритеты
индивидуально для каждой переменной ;)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 30, 2007 00:46 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 30, 2007 01:04 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Зато максимально будет использована видимая область экрана! :) Ее всегда не хватает!! ;)
Всякая ерунда торчит, а то, что нужно - не влазит! :)

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 30, 2007 01:17 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
С учетом мороки, связанной с переключением этих режимов - все равно ничего не будет использоваться. Сейчас, по опыту работы, иногда включается hex ("ой, а что это такое на стеке? Ах, 0x008000...!"). А если еще тратить силы на интерфейсные элементы...

Впрочем, это все настраивается и дописывается. Был бы движок...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 30, 2007 02:32 
Не в сети

Зарегистрирован: Сб май 06, 2006 12:01
Сообщения: 959
Откуда: Украина, Харьков
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
Хищник писал(а):
Впрочем, это все настраивается и дописывается. Был бы движок...

Да!
А переключение режимов - просто формат вывода, он даже в TurboDebugger-е есть... ;)

Остается обычная проблема - как пасти Фортеров, чтоб не разбредались... ;)
Как иметь минимальное количество наборов настроек. Можно переучиться, чтобы
дальше работать со стандартом. Но стандарт должен быть удобным! :)

И как сделать полный набор настроек...

_________________
With best wishes, in4.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср май 30, 2007 23:13 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
А стандарта по сути не наблюдается. Никаких "канатов" между shell-ом и Фортом нет. Только Evaluate. Стек, правда, можно получить и более простым способом, по GetStack. Но основная идея была в том, чтобы с dll можно было работать только через Evaluate.


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

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


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

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


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

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