Вверх ↑
Ответов: 2059
Рейтинг: 131
#1: 2015-05-05 13:58:04 ЛС | профиль | цитата
а вот делать из HIASM Форт программы наверно ещё не получится.

Как раз нет. (Правда надо договорится о терминологии, а то мы можем говорить о разном.)
Надо переделать определение слова SAVE и вперёд.
Даже как то делал. Надо найти.
Мало того, можно делать полноценные dll из Hiasm_программ.exe, как в прочем и других exe (из других, если не нужны коллбэки.
На этот счёт есть мысли, но тут надо на примере показывать, иначе затрудняюсь объяснить ).
Со временем выложу схемку. Сейчас не могу, другой задачей сильно занят.

Можно ведь пойти по примеру линукса разделить программу на "консольное мясо"

В форте есть такая практика, - подгружать байткод на одни и те-же адреса .
____________________________________________________________________________________________________________________________

Короче говоря, если сделать перехват при компиляции по какой-то директиве, к примеру как мы пишем asm ... end, также писать forth ... end, то можно верёвки вить. Тем форт и хорош, что есть определения (слова) немедленного исполнения и определения (слова), которые просто компилируются.
Иными словами - мастерим компилятор сами при написании программы. Но вот как перехват сделать??? А дальше просто.

Есть другой вариант, если не привязываться к SP-Forth, то можно сделать подгружаемую библиотеку forth.pas - uses forth,Kol,Share,Debug;
http://forum.hiasm.com/forum_serv.php?q=56&id=3941
P.S. Вот чего нашел http://fforum.winglion.ru/viewtopic.php?f=34&t=2696&start=75
------------ Дoбавленo в 13.58:
Посетила шальная мысль.
Пока не ушла:
Известно, что к форту без проблем можно подключить любой компилятор.
С интерпритаторами немного нужно больше усилий, но тоже всё работает.
Т.е. одно определение слова на одном языке, следующее на другом и всё это работает.
(только что попробовал Си и паскаль)
Так вот, сделать общую оболочку на форте, где передача данных происходит через стек данных, а не через потоки.
Что это даёт?
1. Не нужны отдельные пакеты заточенными под один язык.
Как следствие - компоненты становятся общими для всех языков.
2. Передача данных через стек на порядки быстрее, чем через потоки, что является "ахиллесовой пятой" Hiasm.
3. Нет излишнего кода. Кстати, почему и был введён KOL - для уменьшения объёма генерируемого кода.
Это значит, что если есть сотня одинаковых квадратиков, то будет присутствовать код на один квадратик. Не кто не запрещает иметь код и на сотню одинаковых квадратиков. Наследование и т.д., всё это есть.
4. Наверное самое главное свойство - естественное и безболезненное наращивание компилятора и операторов, функции и процедуры (слова) немедленного исполнения.
5. Нет проблем с типами.
Минусы:
1. Нужно делать все компоненты заново.
По этой причине я пользуюсь только пакетом Windows - там палитра богаче, хотя часто требуется Python и другие.
2. Не понятно как будет всё это выглядеть без соединительных линий. Хотя они пригодятся для указания вызовов и их очерёдности.
3. И самое главное - это уже не Hiasm! От него остаётся только визуализация квадратиков.

Для реализации нужен стимул, необходимость, какая то реальная задача.
Реализация, ради реализации, интереса - не прокатит.

P.S. SP-Forth для этой цели не подойдёт. Нужна целевая компиляция.
В принципе на SP-Forth целевая компиляция тоже делается без проблем. Надо чуть изменить код disasm1.f. Там тоже делается map.
Про Байт-код http://www.genon.ru/GetAnswer.aspx?qid=5f39e0bb-374f-441f-968f-2cc5871241bd
http://www.gunsmoker.ru/2013/05/modern-delphi.html
карма: 6

0