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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Есть либы для создания DLL на форте?
СообщениеДобавлено: Вт сен 24, 2019 10:27 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 917
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Есть либы для создания DLL на форте?

А то вот вдруг понадобилось

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Есть либы для создания DLL на форте?
СообщениеДобавлено: Вт сен 24, 2019 15:32 
Не в сети

Зарегистрирован: Пн июл 01, 2019 14:01
Сообщения: 54
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Вроде не встречал, но такую возможно сделать на основе либы сохранения исполняемого файла, насколько я знаю DLL - это тот же PE файл, отличающийся от EXE содержимым нескоторых полей и наличием таблицы экспорта.

Вот для старта информация о структуре PE файлов.

PS. Кстати, например линуксовые so-шки и исполняемые файлы с динамической линковкой походу вообще между собой не различаются структурой, я даже как-то скомпилировал библиотеку в которой располагалась функция main, а в исполняемом файле только данные, я таким же образом думал вынести интерпретатор шитого кода и основные примитивы в библиотеку, а в исполнямом файле хранить один лишь шитый код, но потом все-таки решил (пока только решил) придумать свой формат в угоду переносимости (да и походу сама точка входа _start так и оставалась в исполняемом файле, по идее ее можно разместить и в so-шке, а из исполняемого файла убрать, но мне лень разбираться с линкером). Кстати будет интересно посмотреть если кто таким уже занимался.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Есть либы для создания DLL на форте?
СообщениеДобавлено: Вт сен 24, 2019 16:59 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 4997
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 20 раз.
Поблагодарили: 58 раз.
был вариант с СПФом (видел когда-то, но не смотрел)

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Есть либы для создания DLL на форте?
СообщениеДобавлено: Вт сен 24, 2019 17:51 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1132
Благодарил (а): 3 раз.
Поблагодарили: 43 раз.
mOleg писал(а):
был вариант с СПФом (видел когда-то, но не смотрел)

У меня есть и собирался и запускался такой пример сборки DLL для SPF4, но сейчас его FAR при запуске его "отторгает".
(может имеет смысл пересобрать)

Forth Hello for Far (32-бит)
Это из либы в каталоге ~ygrek/prog
а также ещё либа для создания DLL в SPF4 в директории ~pinka/lib/utils

P.S. даже какие то антивирусы на Virustotal на архив ругаются. Может и правда там завёлся вирус? (Форт) :)


Последний раз редактировалось KPG Чт сен 26, 2019 03:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Есть либы для создания DLL на форте?
СообщениеДобавлено: Ср сен 25, 2019 21:28 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 917
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Исправление от 2709.2019

Хрен пойми как, но такой код уже работает.
Может дело в последний части после релокации? Уже лень разбираться. Компилировал запускал из форта. Работает.
Конвенция Stdcall

Код:
format PE console DLL
entry DllEntryPoint

include 'win32a.inc'

section '.text' code readable executable

proc DllEntryPoint
        mov     eax,TRUE
        ret
endp

proc PROV
POP EBX
POP EAX
ADD EAX, 10
JMP EBX
endp

section '.edata' export data readable

  export 'EBX-1.DLL',PROV,'PROV'

section '.reloc' fixups data readable discardable

  if $=$$
    dd 0,8              ; if there are no fixups, generate dummy entry
  end if



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


Последний раз редактировалось Victor__v Пт сен 27, 2019 19:20, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Есть либы для создания DLL на форте?
СообщениеДобавлено: Пт сен 27, 2019 17:34 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1132
Благодарил (а): 3 раз.
Поблагодарили: 43 раз.
Собрал SPF4.21 для Windows из исходников с Github. (были при этом некоторые заморочки при сборке)
в большей степени из-за кодировки в файлах (unix перевод строк), поэтому для компиляции примеров
строка будет такой: spf4.exe UNIX-LINES <имя_файла>
если запустить сборку системы из исходников - compile.bat, то для завершения сборки потребуется ввести
DONE и далее клавишу возврата <Enter>

Spf4.21

P.S. В корне системы пара примеров сборки DLL и проверки в простеньких батниках.
(один для плагина Фара и соответственно каталог с дополнительными файлами плагина)
+ ещё добавлил Форт-пример проверки передачи параметров в jvm.dll (создаётся с именем Proba.exe)
(расположив его в каталоге client , где распологается jvm.dll можно его запустить и увидеть выведенное из Java консольное сообщение) может уже кто то имеет опыт использования Java из Форт, кроме данного примера?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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