Forth http://fforum.winglion.ru/ |
|
Forth++ http://fforum.winglion.ru/viewtopic.php?f=4&t=2674 |
Страница 1 из 8 |
Автор: | mgw [ Вт окт 26, 2010 18:17 ] |
Заголовок сообщения: | Forth++ |
Достоинства Форта известны. Это и расширяемый синтаксис, и встроенный ассемблер и т.д. и т.п. Однако позиционировать его можно только на уровень языка С. Кстати отсюда стремление народа написать Форт ОС. И это реально. Пишут же на С операционные системы. Однако современная действительность требует взаимодействия языка программирования с объектно-ориентированными библиотеками, которые в большинстве написаны на C++. И Python и Java объектные с низу до верху. Вот если бы с Форта (с SPF например) можно было бы использовать объекты С++ из DLL или SO, это дало бы мощнейший толчок популяризации форта, как языка программирования. Нужно модернизировать C-CALL для вызова конструкторов или написать новый вариант, например C-CALL++. Может быть, сосредоточимся на реализации ОО в Фоте (Forth++) и попытаемся научиться использовать С++ библиотеки из Форта? |
Автор: | mOleg [ Вт окт 26, 2010 18:34 ] |
Заголовок сообщения: | Re: Forth++ |
Объекты делали для разных Форт-систем все, кому не лень. Для того же СПФа этих вариантов было... |
Автор: | mgw [ Вт окт 26, 2010 18:36 ] |
Заголовок сообщения: | Re: Forth++ |
Я не об объектах, а об использовании С++ библиотек из Форта … |
Автор: | Antender [ Вт окт 26, 2010 19:19 ] |
Заголовок сообщения: | Re: Forth++ |
А ничего и не мешает использованию библиотек. Посмотрите /devel в SP-Forth. |
Автор: | mgw [ Вт окт 26, 2010 19:28 ] |
Заголовок сообщения: | Re: Forth++ |
Цитата: А ничего и не мешает использованию библиотек. Посмотрите /devel в SP-Forth. Мешает Name Mangling in C++ (перегрузка имен), передача параметров в конструктор и т.д. Конечно, можно взять компилятор C++, написать wrapping (обертку) на объекты (при этом потеряв наследование) и получить очередную DLL или SO. Потом подключить её к Форту и т.д., а вот как использовать объекты непосредственно с Форта? И возможно ли это вообще? |
Автор: | Ilya [ Вт окт 26, 2010 19:32 ] |
Заголовок сообщения: | Re: Forth++ |
Antender писал(а): А ничего и не мешает использованию библиотек. Посмотрите /devel в SP-Forth. И примеры вызова ООП-ных есть? Например QT. |
Автор: | ArtemKAD [ Вт окт 26, 2010 19:58 ] |
Заголовок сообщения: | Re: Forth++ |
mgw писал(а): Вот если бы с Форта (с SPF например) можно было бы использовать объекты С++ из DLL или SO, это дало бы мощнейший толчок популяризации форта, как языка программирования. А в DLL есть объекты? Насколько помню они исчезают сразу после компиляции. Ну а вызов функции из dll-ки примерно так: WINAPI: FreeLibrary KERNEL32.DLL и дальше работаешь с ней как с обычным словом... |
Автор: | mgw [ Вт окт 26, 2010 20:19 ] |
Заголовок сообщения: | Re: Forth++ |
Судя по ответам выше я не могу раскрыть суть проблемы. Попробую на примере: Задача, имея SPF и имея QtGui.dll и QtCore.dll (и ни чего более) с SPF инициализировать графическую оболочку Qt, вызвать конструктор (например QWidget(…)) и отобразить на экране полученное окошко. Только и всего |
Автор: | Antender [ Вт окт 26, 2010 20:24 ] |
Заголовок сообщения: | Re: Forth++ |
WINAPI: Init QtСore.dll WINAPI: QWidget QiGui.dll Init QWidget Что-то в этом духе |
Автор: | mgw [ Вт окт 26, 2010 20:33 ] |
Заголовок сообщения: | Re: Forth++ |
так не получиться ... из за Name Mangling in C++ (перегрузка имен), передача параметров в конструктор и т.д. |
Автор: | Гость [ Ср окт 27, 2010 05:55 ] |
Заголовок сообщения: | Re: Forth++ |
mgw писал(а): а вот как использовать объекты непосредственно с Форта? И возможно ли это вообще? Вариант: использовать объекты через COM (да, это возможно) |
Автор: | mgw [ Ср окт 27, 2010 10:51 ] |
Заголовок сообщения: | Re: Forth++ |
Можно подключиться и напрямую к DLL с объектами. Пример http://mgw.narod.ru/algoritms.htm#fromDLLCPP Но это макет. А вот ввести бы в SPF поддержку такого механизма было бы очень хорошо! |
Автор: | mOleg [ Ср окт 27, 2010 14:48 ] |
Заголовок сообщения: | Re: Forth++ |
mgw писал(а): А вот ввести бы в SPF поддержку такого механизма было бы очень хорошо! вводите |
Автор: | mgw [ Ср окт 27, 2010 18:16 ] |
Заголовок сообщения: | Re: Forth++ |
Проблема в C-CALL при вызове конструктора. В win вроде работает, а в Linux нет. В чем проблема понять не могу. Тут нужен спец по ассемблеру. Моих знаний не хватает |
Автор: | chess [ Чт окт 28, 2010 14:39 ] |
Заголовок сообщения: | Re: Forth++ |
mgw писал(а): Проблема в C-CALL при вызове конструктора. В win вроде работает, а в Linux нет. Смотрим в SPF420: Код: CODE C-CALL ( x1 ... xn n adr -- res) \ Порядок экспортируемых аргументов обратный, по сравнению \ со словами API-CALL (spf_win_api.f) и CAPI-CALL (~af/lib/c/capi.f). \ Порядок обращается при их переносе на R-стек. MOV EBX, [EBP] \ число аргументов MOV ESI, # 4 @@1: OR EBX, EBX JZ @@2 \ PUSH [EBP] [ESI] A; 0xFF C, 0x74 C, 0x35 C, 0x00 C, LEA ESI, 4 [ESI] DEC EBX JMP @@1 @@2: CALL EAX MOV ECX, [EBP] SHL ECX, # 2 ADD ESP, ECX ADD ECX, # 4 ADD EBP, ECX RET END-CODE Код выполняет копирование параметров со стека параметров на стек возвратов, затем идет вызов по адресу в EAX и убирание параметров со стека параметров. В EAX после вызова процедуры должен оказаться ее результат. Видим несоответствие комментария и самого кода: Код: \ PUSH [EBP] [ESI] A; 0xFF C, 0x74 C, 0x35 C, 0x00 C, тут должно быть Код: \ PUSH [ESI][EBP] A; 0xFF C, 0x74 C, 0x2E C, 0x00 C, Это просто навскидку, сам окнами и GUI не занимаюсь, тем более в Linux, поэтому ничего не проверяю. |
Страница 1 из 8 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |