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

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Подключение графической библиотеки QT к SPF 4.20
Автор Сообщение
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Спасибо за информацию по "Name mangling".

Сейчас "графическая библиотека QT к SPF 4.20" переросла в полноценную графическую библиотеку QtE-4. К сожалению работы по поддержке форт варианта QtE пришлось остановить. Зато активно развивается QtE для языка программирования D.. С применением этой библиотеки осуществлён крупный проект, кроссплатформенного приложения, для научно учебного центра (НУЦ) в г.Москва.

На текущий момент в QtE около 400 функций из Qt 4.8
Сообщение Добавлено: Сб сен 05, 2015 19:40
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
mgw писал(а):
Код:
Library@ QtGui  0 THIS-CDECL-Win-VC-Call" ?
show@QWidget@@QAEXXZ" ПокажиОкно // ПокажиОкно

Обратите внимание, на искажение имён (?show@QWidget@@QAEXXZ) вносимое компилятором С++. В этом имени зашифрован тип вызова и кол параметров. Для разных компиляторов может быть различным.

Есть статья по Calling conventions > Раздел "8 Name mangling"
В статье есть подробная таблица с кодами для разных компиляторов следущего вида:
Код:
Table 9. Type codes
|-------------------------------------------------------------------|
| type | Microsoft | Borland | Watcom | Gnu2  | Gnu3-4  | Gnu4      |
|                                             | ABI v.3 | ABI v.4+  |
|-------------------------------------------------------------------|
| void | X         | v       | v      | v     | v       | v         |
| bool | _N        | 4bool   | q      | b     | b       | b         |
| char | D         | c       | a      | c     | c       | c         |
и т. д.

Так же есть коды для сложных типов (как классы). Имея подобную информацию можно создать библиотеку для конвертирования имен вида ?show@QWidget@@QAEXXZ в адекватные исходные имена C++.

Calling conventions
for different C++ compilers and operating systems

By Agner Fog. Technical University of Denmark.
Copyright © 2004 - 2014. Last updated 2014-08-07.

Contents
    1 Introduction . 3
    2 The need for standardization. 5
    3 Data representation. 6
    4 Data alignment 8
    5 Stack alignment. 9
    6 Register usage 10
    6.1 Can floating point registers be used in 64-bit Windows? . 13
    6.2 YMM vector registers 14
    6.3 ZMM vector registers 15
    6.4 Register usage in kernel code. 15
    7 Function calling conventions . 16
    7.1 Passing and returning objects. 20
    7.2 Passing and returning SIMD types 23
    8 Name mangling . 25
    8.1 Microsoft name mangling 29
    8.2 Borland name mangling 34
    8.3 Watcom name mangling . 35
    8.4 Gnu2 name mangling 36
    8.5 Gnu3-4 name mangling 38
    8.6 Intel name mangling for Windows . 40
    8.7 Intel name mangling for Linux . 41
    8.8 Symantec and Digital Mars name mangling 41
    8.9 Codeplay name mangling . 41
    8.10 Other compilers 42
    8.11 Turning off name mangling with extern "C" . 42
    8.12 Conclusion 43
    9 Exception handling and stack unwinding . 43
    10 Initialization and termination functions . 44
    11 Virtual tables and runtime type identification 44
    12 Communal data. 45
    13 Memory models. 45
    13.1 16-bit memory models 45
    13.2 32-bit memory models 46
    13.3 64-bit memory models in Windows . 46
    13.4 64-bit memory models in Linux and BSD 46
    13.5 64-bit memory models in Intel-based Mac (Darwin) 46
    14 Relocation of executable code. 47
    14.1 Import tables. 49
    15 Object file formats . 49
    15.1 OMF format. 49
    15.2 COFF format. 50
    15.3 ELF format 51
    15.4 Mach-O format 51
    15.5 a.out format. 52
    15.6 Comparison of object file formats 52
    15.7 Conversion between object file formats. 52
    15.8 Intermediate file formats . 52
    16 Debug information. 53
    17 Data endian-ness 53
    18 Predefined macros 53
    19 Available C++ Compilers . 55
    19.1 Microsoft. 55
    19.2 Borland . 55
    19.3 Watcom 55
    19.4 Gnu. 55
    19.5 Digital Mars. 55
    19.6 Codeplay 55
    19.7 Intel. 55
    20 Literature. 56
    20.1 ABI's for Unix, Linux, BSD and Mac OS X (Intel-based) 56
    20.2 ABIs for Windows 56
    20.3 Object file format specifications. 57
    21 Copyright notice 57
    22 Acknowledgments . 57

Ссылки:
Сообщение Добавлено: Сб сен 05, 2015 06:47
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Спасибо, KPG. Я наконец то победил Qt. Правда не без помощи Lazarus. Именно там нашлось решение. Сейчас я научился распределять и уничтожать память объектов Qt, и разобрался с QApplication. Вполне реально написать полноценную объвязку Qt для SPF.
Сообщение Добавлено: Пт фев 21, 2014 14:42
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
mgw писал(а):
Помогите подключить SPF (именно его) в качестве DLL (so) к выполняемому EXE.

Вариант сборки? (для Windows, но не сильно правильный)
Поиск по spf.dll на форуме

mgw писал(а):
Подскажите, где есть наработки на эту тему. Основная цель, как бы остановить работающее приложение и переключится в SPF для исследования внутренностей работающего приложения. Этакий встроенный отладчик.

Точно не подскажу, но наверное можно использовать возможности , в частности Fasm по созданию варианта Fasm+SPFort4 в виде DLL и его расширению.
(для "многих" программ - языков программирования Fasm является back-end при создания исполняемого файла, и в частности для HLA ассемблера)

Михаил встраивал SPF4 в FASM для его исследования.
архив такого решения для Windows системы.

В тесте извлекается Map файл из данных Fasm при компиляции, А также вызвав ABORT в скрипте можно вызвать консоль SPF4
В данном варианте можно средствами SPF4 заменить некоторый родной функционал FASM при сохранении совместимости компилируемого асм кода.
и при этом существует возможность задействовать возможности SPF4

P.S. Ещё один проект с дизасемблированием "используемых asm кодов слов скрипта SPF4" для встраивания SPF Форт кода в Delphi HiAsm (с форума HiAsm)
Disasm может тоже на что сгодится:)
Участник форума flint2 делал и SPF.dll

P.P.S. SPF4 in QEMU (by Mihail) (100Mb c MinGW) Можно на уровне ядра СPU отладку сделать :)
и внедрить, по возможности, в последние версии QEMU. (консоль Форт системы также в наличии)
Сообщение Добавлено: Вт фев 11, 2014 17:25
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Уважаемые форумчане, нужна ваша помощь!
Помогите подключить SPF (именно его) в качестве DLL (so) к выполняемому EXE. Подскажите, где есть наработки на эту тему. Основная цель, как бы остановить работающее приложение и переключится в SPF для исследования внутренностей работающего приложения. Этакий встроенный отладчик.

P.S. http://qte.ucoz.ru/load/qte_ot_060214_dlja_d_i_spf_4_20_windows_i_linux_32_64_ne_proverjal/1-1-0-9 - содержит QtE.f для работы SPF с Qt
Сообщение Добавлено: Вт фев 11, 2014 16:03
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Уважаемые форумчане, нужна ваша помощь!
Помогите подключить SPF (именно его) в качестве DLL (so) к выполняемому EXE. Подскажите, где есть наработки на эту тему. Основная цель, как бы остановить работающее приложение и переключится в SPF для исследования внутренностей работающего приложения. Этакий встроенный отладчик.
Сообщение Добавлено: Пт янв 24, 2014 22:48
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
mgw писал(а):
Колибри для меня слишком сложна.

На уровне использования SPF, наверное, не так сложно.
Для запуска Kolibri программ в XP KlbrinWin
KlbrinWin_src компилируется Fasm
Тема обсуждения Forth под Kolibri Os
Но для использования всего API Колибри существующий вариант(ы), наверное, потребуется расширить.

mgw писал(а):
Мне больше интересна интеграция форта (SPF желательно) в другие приложения. Скажем использование SPF в качестве внутреннего "исследователя" (вместо отладчика например) конечного приложения на D и его (приложения) дальнейшего модификации. Наверное надо SPF цеплять как DLL ку.

У Михаила для примерно таких целей были "имплантации" Форта в разные программы и в частности в качестве "исследователя" в QEMU - это возможно более универсальный вариант.
Сообщение Добавлено: Ср янв 08, 2014 23:40
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Колибри для меня слишком сложна. Мне больше интересна интеграция форта (SPF желательно) в другие приложения. Скажем использование SPF в качестве внутреннего "исследователя" (вместо отладчика например) конечного приложения на D и его (приложения) дальнейшего модификации. Наверное надо SPF цеплять как DLL ку.
Сообщение Добавлено: Ср янв 08, 2014 21:35
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
KPG писал(а):
Ещё немного "допиливания" и был бы полноценный форк Колибри на базисе Форт.

Вытащить из Колибри что-то полезное для работы в дугой системе - задача почти не реальная.
На первом этапе лучше заставить форт-систему сгенерировать тот-же бинарник, что генерируется FARом.
Принципиальных проблем нет. Вопрос в объеме. Если просто перевести на форт-ассемблер в одиночку,
это месяцы (если не годы) непрерывной работы. Следует разработать специальный дизассемблер или
сделать форт-ассемблер максимально близким к FARу.
Сообщение Добавлено: Ср янв 08, 2014 21:14
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
mgw писал(а):
Когда то давно, я заинтересовался вопросом «Можно ли из Forth использовать тонны готовых библиотек валяющихся на компьютере в виде DLL, при этом не используя компилятор С++». К сожалению ответ — НЕТ.

И какой процент "неправильных" DLL? Много же и правильных.
Кроме того некоторые DLL сделаны с ипользованием DCOM/OLE/ActiveX технологии (достаточно популярной в определённых "обстоятельствах" для Windows) и другие современные "инкарнации"


P.S. Для использования, например, Java можно из SPF4 использовать JVM.DLL или уже нет? (учтя сигнатуры классов).
Можно "завести" список DLL с которыми уже опробована возможность их использования в тех или иных Форт-системах.

В "некоторых" случаях можно порекомендовать, например при создании пользовательского графического интерфейса,
выбросить "технологические" DLL и отрисовать интерфейс непосредственно в графическую память системы.
(много хороших есть примеров, например Reda4 Forth like система для Windows и др. варианты)
Сейчас мне больше "импонирует" данный вариант "экстремального" программирования.
(Делать приложение, например, используя возможности графического интерфейса Koлибри ОС, а запускать в рамках ХP или других систем через
симулятор (сделан уже) или виртуальные машины или в рамках самой операционной системы) Думаю "обкатать" данный вариант. К тому же для Колибри ОС уже присутствует вариант SPF4 Форт системы. (стараниями вездесущего Михаила:) Ещё немного "допиливания" и был бы полноценный форк Колибри на базисе Форт. (сейчас только демо-прототип)
Сообщение Добавлено: Пн янв 06, 2014 14:12
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Когда то давно, я заинтересовался вопросом «Можно ли из Forth использовать тонны готовых библиотек валяющихся на компьютере в виде DLL, при этом не используя компилятор С++». К сожалению ответ — НЕТ.
Если библиотеки написаны в стиле классического С, то проблем нет. Там лежит просто набор функций с «прозрачными» именами, которые легко использовать. Однако большинство современных представляют собой С++ библиотеки. Первая трудность в них — это искажение имен. В них добавлен список и типы аргументов, что делает их слабо понятными для человека. Сделано это для того, что бы С++ мог иметь одинаковое имя функции с разными параметрами. Существует множество утилит декодирующих имена и аргументы в нормальный вид, что фактически снимает эту проблему. Конструкторы и деструкторы, если они имеются в DLL могут быть корректно вызваны и работают правильно. Таким образом в Forth можно построить дерево классов С++. Но, как выяснилось в погоне за «эффективностью» часть функций определена в виде «inline» функций. А так как «inline» - это псевдофункция, то её код не представлен в DLL. Получается, что часть кода в DLL С++ c «inline» функциями отсутствует физически. Без компилятора С++ и исходных текстов воспроизвести эту утерянную часть нет возможности. По правильному, нужно к каждой С++ библиотеке прикладывать «DLLку совместимости», в которой определить явно все «inline» функции, размеры объектов и прочую недостающую информацию в основных DLL. Жаль, что этого правила нет, это значительно облегчило бы использование С++ библиотек из других языков.
Сообщение Добавлено: Пн янв 06, 2014 11:33
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Из QtE_141013 t13 и t12 запустились
Из последнего архива ничего не запускается:
Код:
Внимание! Error find function:   QT_QCheckBox
Сообщение Добавлено: Сб ноя 23, 2013 01:52
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Отлично! Главное есть QtE.so — это мостик между QtE.f и Qt. Специально для Linux подготовил архив. В нём минимально необходимый набор. Кстати, файлы QtE.so.1.0.0 и spf4 из архива замени своими. Они привязаны к конкретной архитектуре. С точки зрения теории понятно, как работать с Qt из любого диалекта Forth

Файл для скачивания: http://yadi.sk/d/9BmBto_rD8KTG
Сообщение Добавлено: Пт ноя 22, 2013 15:11
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Скачал, скомпилировал. Правда, пришлось подправить пути к qt4: в ubuntu 13.10 файлы include лежат в /usr/include/qt4. Получил QtE.so.1.0.0
При попытке запуска t13.f ошибка:
Код:
Exception #2 at: ~mgw/qte.f:251:30:
if=L REQUIRE HYPE qtf/hype3.f         //
                            ^ -2003 WORD OR FILE NOT FOUND

Не хватает папки qtf.
Сообщение Добавлено: Пт ноя 22, 2013 01:51
  Заголовок сообщения:  Re: Подключение графической библиотеки QT к SPF 4.20  Ответить с цитатой
Отлично! Моя почта mgwl@mail.ru Если есть вопросы пиши на этот адрес или спрашивай в этой теме.
Первая задача запустить QtE и примеры.
Необходимо скачать QtE от 141013. ( для D и SPF-4-20 ) Windows и Linux 32 и 64
http://qte.ucoz.ru/. Скомпилировать библиотеку qte.so Попытаться запустить примеры.
Сообщение Добавлено: Пн ноя 18, 2013 18:56

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


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