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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Проблема в C-CALL в SPF-Linux
СообщениеДобавлено: Пт апр 02, 2010 16:21 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
В Linux столкнулся с непонятным поведением C-CALL. Если несколько вызовов записаны в рамках одного определения, то все работает. Если их разнести в два определения не работает (валится по core dump). Как найти причину?
Пример:
Код:
: aa     \  РАБОТАЕТ
   0 1 aQWidget @ C-CALL 1 aQWidget_show @  C-CALL DROP
    _QT_App @ 1 aapp_exec @ C-CALL DROP
   ;

: a1
   0 1 aQWidget @ C-CALL 1 aQWidget_show @  C-CALL DROP
   ;
: a2
    _QT_App @ 1 aapp_exec @ C-CALL DROP
   ;
: bb     \  НЕ РАБОТАЕТ
    a1  a2
    ;
В Windows такая конструкция работает нормально. Как найти причину?


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
отключить оптимизатор
посмотреть сгенерированный код
прогнать в отладчике
дать полностью весь код чтобы можно было повторить проблему

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб апр 03, 2010 22:10 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Закачал пример http://narod.ru/disk/19366329000/spf-call.zip.html В README описал проблему и запуск примера.


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

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
Немного ОФФ!
А как ищется требуемая .so-шка по функции?
В смысле: в win32 - смотрим функцию в мэсэдэене и видем всю требуемую инфу (список параметров, имя подключаемой dll-ки, и т.п), а в Лине как?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 05, 2010 12:16 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Цитата:
А как ищется требуемая .so-шка по функции?

Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT.
Если по функциям Linux — то программа man, в составе Linux
ну а по всему остальному www.google.ru


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн апр 05, 2010 18:08 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Специалисты по spf и ассемблеру, помогите вставить в C-CALL сохранение регистров задействованных в ядре SPF. Сейчас у меня C-CALL (spf 4.20 Linux) выглядит след. образом:
Код:
CODE C-CALL ( x1 ... xn n adr -- res ) \ int fun(x1 .. xn);
      MOV EBX, [EBP]      \ число аргументов
      MOV ESI, # 4
@@1: OR EBX, EBX
      JZ @@2
A;   PUSH [EBP] [ESI]
      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


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

Зарегистрирован: Чт ноя 23, 2006 00:44
Сообщения: 494
Откуда: СПб
Благодарил (а): 19 раз.
Поблагодарили: 8 раз.
mgw писал(а):
Цитата:
А как ищется требуемая .so-шка по функции?

Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT.
Если по функциям Linux — то программа man, в составе Linux
ну а по всему остальному www.google.ru

Кста, Уважаемый - может Вы поделитесь своими наработками в области GUI под Линукс!? :wink: Особливо для неофитов! :pilot2;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 06, 2010 03:54 
Не в сети

Зарегистрирован: Пт фев 20, 2009 03:50
Сообщения: 20
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ilya писал(а):
А как ищется требуемая .so-шка по функции?

..иногда бывает немного по-другому: название функции известно;), а название .so/.dll - предполагается;
в таком случае:
Код:
nm название_либы | grep название_функции

..полезно брать подстроку названия функции..
Еще для целей вивисекции/эксгумации есть "мега-тулзы" objdump и objcopy. Главное при их применении - не переусердствовать :)

mgw писал(а):
Специалисты по spf и ассемблеру, помогите вставить в C-CALL сохранение регистров

..вспомнил, что юнихи, в т.ч. линух используют (скорее всего) BX при работе с dll/so, следовательно, этот регистр нужно сохранять во избежание memory fault-ов. Попробуйте - должно сработать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт апр 06, 2010 10:19 
Не в сети

Зарегистрирован: Ср фев 17, 2010 18:10
Сообщения: 323
Откуда: Тверь
Благодарил (а): 13 раз.
Поблагодарили: 11 раз.
Цитата:
Кста, Уважаемый - может Вы поделитесь своими наработками в области GUI под Линукс!

Горько признать, но реальных разработок на SPF у меня нет. Есть желание попробовать написать небольшую графическую либу на SPF + dll/so + QT. Меня больше всего интересует кросплатформенность (windows и linux). В качестве примера (http://narod.ru/disk/19366329000/spf-call.zip.html). Задача эта решаема http://mgw.narod.ru, но для этого надо сделать унифицированную либу как для win так и для linux. Сейчас поддержка win и linux в SPF различается кардинально, как форматом вызовов, так и синтаксисом, что на мой взгляд неоправданно. На данном этапе я застрял на C-CALL, который явно сырой (нет сохранения важных для SPF регистров), но проблема у меня с ассемблером, нет достаточных знаний.
Цитата:


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

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


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

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


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

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