Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
Цитата: Кста, Уважаемый - может Вы поделитесь своими наработками в области 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 регистров), но проблема у меня с ассемблером, нет достаточных знаний. Цитата:
[quote]Кста, Уважаемый - может Вы поделитесь своими наработками в области GUI под Линукс![/quote] Горько признать, но реальных разработок на SPF у меня нет. Есть желание попробовать написать небольшую графическую либу на SPF + dll/so + QT. Меня больше всего интересует кросплатформенность (windows и linux). В качестве примера ([url]http://narod.ru/disk/19366329000/spf-call.zip.html[/url]). Задача эта решаема [url]http://mgw.narod.ru[/url], но для этого надо сделать унифицированную либу как для win так и для linux. Сейчас поддержка win и linux в SPF различается кардинально, как форматом вызовов, так и синтаксисом, что на мой взгляд неоправданно. На данном этапе я застрял на C-CALL, который явно сырой (нет сохранения важных для SPF регистров), но проблема у меня с ассемблером, нет достаточных знаний.[quote][/quote]
|
|
|
|
Добавлено: Вт апр 06, 2010 10:19 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Ilya писал(а): А как ищется требуемая .so-шка по функции? ..иногда бывает немного по-другому: название функции известно;), а название .so/.dll - предполагается; в таком случае: Код: nm название_либы | grep название_функции ..полезно брать подстроку названия функции.. Еще для целей вивисекции/эксгумации есть "мега-тулзы" objdump и objcopy. Главное при их применении - не переусердствовать mgw писал(а): Специалисты по spf и ассемблеру, помогите вставить в C-CALL сохранение регистров
..вспомнил, что юнихи, в т.ч. линух используют (скорее всего) BX при работе с dll/so, следовательно, этот регистр нужно сохранять во избежание memory fault-ов. Попробуйте - должно сработать.
[quote="Ilya"]А как ищется требуемая .so-шка по функции?[/quote] ..иногда бывает немного по-другому: название функции известно;), а название .so/.dll - предполагается; в таком случае: [code] nm название_либы | grep название_функции [/code] ..полезно брать подстроку названия функции.. Еще для целей вивисекции/эксгумации есть "мега-тулзы" [i]objdump[/i] и [i]objcopy[/i]. Главное при их применении - не переусердствовать :)
[quote="mgw"]Специалисты по spf и ассемблеру, помогите вставить в C-CALL сохранение регистров[/quote]
..вспомнил, что юнихи, в т.ч. линух используют (скорее всего) [b]BX[/b] при работе с dll/so, следовательно, этот регистр нужно сохранять во избежание memory fault-ов. Попробуйте - должно сработать.
|
|
|
|
Добавлено: Вт апр 06, 2010 03:54 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
mgw писал(а): Цитата: А как ищется требуемая .so-шка по функции? Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT. Если по функциям Linux — то программа man, в составе Linux ну а по всему остальному www.google.ru
Кста, Уважаемый - может Вы поделитесь своими наработками в области GUI под Линукс!? Особливо для неофитов!
[quote="mgw"][quote]А как ищется требуемая .so-шка по функции?[/quote] Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT. Если по функциям Linux — то программа man, в составе Linux ну а по всему остальному http://www.google.ru[/quote]
Кста, Уважаемый - может Вы поделитесь своими наработками в области GUI под Линукс!? :wink: Особливо для неофитов! :pilot2;
|
|
|
|
Добавлено: Пн апр 05, 2010 23:02 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Специалисты по 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
Специалисты по spf и ассемблеру, помогите вставить в C-CALL сохранение регистров задействованных в ядре SPF. Сейчас у меня C-CALL (spf 4.20 Linux) выглядит след. образом:
[code]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[/code]
|
|
|
|
Добавлено: Пн апр 05, 2010 18:08 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Цитата: А как ищется требуемая .so-шка по функции?
Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT.
Если по функциям Linux — то программа man, в составе Linux
ну а по всему остальному www.google.ru
[quote]А как ищется требуемая .so-шка по функции?[/quote]
Если вопросы по графике QT — то программа assistant (полная справка по использованию), идет в составе QT.
Если по функциям Linux — то программа man, в составе Linux
ну а по всему остальному http://www.google.ru
|
|
|
|
Добавлено: Пн апр 05, 2010 12:16 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Немного ОФФ!
А как ищется требуемая .so-шка по функции?
В смысле: в win32 - смотрим функцию в мэсэдэене и видем всю требуемую инфу (список параметров, имя подключаемой dll-ки, и т.п), а в Лине как?
Немного ОФФ!
А как ищется требуемая .so-шка по функции?
В смысле: в win32 - смотрим функцию в мэсэдэене и видем всю требуемую инфу (список параметров, имя подключаемой dll-ки, и т.п), а в Лине как?
|
|
|
|
Добавлено: Вс апр 04, 2010 12:26 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
|
|
|
Добавлено: Сб апр 03, 2010 22:10 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
отключить оптимизатор
посмотреть сгенерированный код
прогнать в отладчике
дать полностью весь код чтобы можно было повторить проблему
отключить оптимизатор
посмотреть сгенерированный код
прогнать в отладчике
дать полностью весь код чтобы можно было повторить проблему
|
|
|
|
Добавлено: Пт апр 02, 2010 22:51 |
|
|
|
|
|
Заголовок сообщения: |
Проблема в C-CALL в SPF-Linux |
|
|
В 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 такая конструкция работает нормально. Как найти причину?
В Linux столкнулся с непонятным поведением C-CALL. Если несколько вызовов записаны в рамках одного определения, то все работает. Если их разнести в два определения не работает (валится по core dump). Как найти причину?
Пример:
[code]: 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 ; [/code]В Windows такая конструкция работает нормально. Как найти причину?
|
|
|
|
Добавлено: Пт апр 02, 2010 16:21 |
|
|
|
|