Forth http://fforum.winglion.ru/ |
|
Проблема в C-CALL в SPF-Linux http://fforum.winglion.ru/viewtopic.php?f=18&t=2559 |
Страница 1 из 1 |
Автор: | mgw [ Пт апр 02, 2010 16:21 ] |
Заголовок сообщения: | Проблема в C-CALL в SPF-Linux |
В Linux столкнулся с непонятным поведением C-CALL. Если несколько вызовов записаны в рамках одного определения, то все работает. Если их разнести в два определения не работает (валится по core dump). Как найти причину? Пример: Код: : aa \ РАБОТАЕТ В Windows такая конструкция работает нормально. Как найти причину?
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 ; |
Автор: | ygrek [ Пт апр 02, 2010 22:51 ] |
Заголовок сообщения: | |
отключить оптимизатор посмотреть сгенерированный код прогнать в отладчике дать полностью весь код чтобы можно было повторить проблему |
Автор: | mgw [ Сб апр 03, 2010 22:10 ] |
Заголовок сообщения: | |
Закачал пример http://narod.ru/disk/19366329000/spf-call.zip.html В README описал проблему и запуск примера. |
Автор: | Ilya [ Вс апр 04, 2010 12:26 ] |
Заголовок сообщения: | |
Немного ОФФ! А как ищется требуемая .so-шка по функции? В смысле: в win32 - смотрим функцию в мэсэдэене и видем всю требуемую инфу (список параметров, имя подключаемой dll-ки, и т.п), а в Лине как? |
Автор: | mgw [ Пн апр 05, 2010 12:16 ] |
Заголовок сообщения: | |
Цитата: А как ищется требуемая .so-шка по функции?
Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT. Если по функциям Linux — то программа man, в составе Linux ну а по всему остальному www.google.ru |
Автор: | mgw [ Пн апр 05, 2010 18:08 ] |
Заголовок сообщения: | |
Специалисты по 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 |
Автор: | Ilya [ Пн апр 05, 2010 23:02 ] |
Заголовок сообщения: | |
mgw писал(а): Цитата: А как ищется требуемая .so-шка по функции? Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT. Если по функциям Linux — то программа man, в составе Linux ну а по всему остальному www.google.ru Кста, Уважаемый - может Вы поделитесь своими наработками в области GUI под Линукс!? Особливо для неофитов! |
Автор: | izvr [ Вт апр 06, 2010 03:54 ] |
Заголовок сообщения: | |
Ilya писал(а): А как ищется требуемая .so-шка по функции? ..иногда бывает немного по-другому: название функции известно;), а название .so/.dll - предполагается; в таком случае: Код: nm название_либы | grep название_функции ..полезно брать подстроку названия функции.. Еще для целей вивисекции/эксгумации есть "мега-тулзы" objdump и objcopy. Главное при их применении - не переусердствовать mgw писал(а): Специалисты по spf и ассемблеру, помогите вставить в C-CALL сохранение регистров
..вспомнил, что юнихи, в т.ч. линух используют (скорее всего) BX при работе с dll/so, следовательно, этот регистр нужно сохранять во избежание memory fault-ов. Попробуйте - должно сработать. |
Автор: | mgw [ Вт апр 06, 2010 10:19 ] |
Заголовок сообщения: | |
Цитата: Кста, Уважаемый - может Вы поделитесь своими наработками в области 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 регистров), но проблема у меня с ассемблером, нет достаточных знаний. Цитата:
|
Страница 1 из 1 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |