Quantcast

spf/linux CALLBACK:

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

spf/linux CALLBACK:

ygrek-3
Привет all и yz в особенности!

 Обнаружил что CALLBACK: в spf/linux не работает.
 Определение _WNDPROC-CODE в posix/api.f отличается от
win/spf_win_api.f одной строчкой. Исправление этой строчки возвращает
работоспособность callback'ов.
 Для чего появилось это отличие?

ygrek@lemon:~/work/forth/spf/src/posix$ cvs diff -u api.f
Index: api.f
===================================================================
RCS file: /cvsroot/spf/src/posix/api.f,v
retrieving revision 1.3
diff -u -r1.3 api.f
--- api.f 23 Mar 2008 08:56:48 -0000 1.3
+++ api.f 20 Jul 2008 12:39:08 -0000
@@ -55,7 +55,7 @@
      MOV  EBX, [EAX]
      MOV  EAX, -4 [EBP]
      CALL EBX
-     SUB  EBP, # 12
+     LEA EBP, -4 [EBP]
      MOV  [EBP], EAX
      POP  EDI
      POP  ESI

--
 ~ygrek

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

Yuriy Zhilovets
ygrek пишет:

>Привет all и yz в особенности!
>
> Обнаружил что CALLBACK: в spf/linux не работает.
> Определение _WNDPROC-CODE в posix/api.f отличается от
>win/spf_win_api.f одной строчкой. Исправление этой строчки возвращает
>работоспособность callback'ов.
> Для чего появилось это отличие?
>
У меня в старых исходниках стоит SUB #12
Так что не знаю, чье это творчество.

Ю. Жиловец


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

Yuriy Zhilovets
In reply to this post by ygrek-3
ygrek пишет:

>Привет all и yz в особенности!
>
> Обнаружил что CALLBACK: в spf/linux не работает.
> Определение _WNDPROC-CODE в posix/api.f отличается от
>win/spf_win_api.f одной строчкой. Исправление этой строчки возвращает
>работоспособность callback'ов.
> Для чего появилось это отличие?
>  
>
В том, что под Линуксом слово не должно чистить за собой стек, потому
что это обязанность вызывающего слова.
Только непонятно, почему не работает, может там еще что-то меняли?

Ю. Жиловец


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

ygrek-3
On Sun, 20 Jul 2008 17:17:47 +0300
Yuriy Zhilovets <[hidden email]> wrote:

> В том, что под Линуксом слово не должно чистить за собой стек, потому
> что это обязанность вызывающего слова.
> Только непонятно, почему не работает, может там еще что-то меняли?

Если я правильно понимаю, то это определяется целиком поведением самого xt который
оборачивается в callback (сколько он параметров съест), а прослойка _WNDPROC-CODE от
этого не зависит (и я так уже успел даже в доку написать :)

В spf_win_api.f эта строчка не менялась, так что непонятно..

1.2          (anfilat  15-Jun-02): CODE _WNDPROC-CODE
1.2          (anfilat  15-Jun-02):      MOV  EAX, ESP
1.2          (anfilat  15-Jun-02):      SUB  ESP, # 3968
1.2          (anfilat  15-Jun-02): A;   HERE 4 - ' ST-RES 9 + EXECUTE
1.2          (anfilat  15-Jun-02):      PUSH EBP
1.2          (anfilat  15-Jun-02):      MOV  EBP, 4 [EAX] ( адрес возврата из CALLBACK )
1.2          (anfilat  15-Jun-02):      PUSH EBP
1.2          (anfilat  15-Jun-02):      MOV  EBP, EAX
1.2          (anfilat  15-Jun-02):      ADD  EBP, # 12
1.2          (anfilat  15-Jun-02):      PUSH EBX
1.2          (anfilat  15-Jun-02):      PUSH ECX
1.2          (anfilat  15-Jun-02):      PUSH EDX
1.2          (anfilat  15-Jun-02):      PUSH ESI
1.2          (anfilat  15-Jun-02):      PUSH EDI
1.2          (anfilat  15-Jun-02):      MOV  EAX, [EAX] ( адрес адреса форт-процедуры )
1.2          (anfilat  15-Jun-02):      MOV  EBX, [EAX]
1.2          (anfilat  15-Jun-02):      MOV  EAX, -4 [EBP]
1.2          (anfilat  15-Jun-02):      CALL EBX
1.2          (anfilat  15-Jun-02):      LEA  EBP, -4 [EBP]
1.2          (anfilat  15-Jun-02):      MOV  [EBP], EAX
1.2          (anfilat  15-Jun-02):      POP  EDI
1.2          (anfilat  15-Jun-02):      POP  ESI
1.2          (anfilat  15-Jun-02):      POP  EDX
1.2          (anfilat  15-Jun-02):      POP  ECX
1.2          (anfilat  15-Jun-02):      POP  EBX
1.2          (anfilat  15-Jun-02):      MOV  EAX, ESP
1.2          (anfilat  15-Jun-02):      MOV  ESP, EBP
1.2          (anfilat  15-Jun-02):      MOV  EBP, 4 [EAX] \ сохраненный EBP
1.2          (anfilat  15-Jun-02):      MOV  EAX, [EAX]   \ адрес возврата из CALLBACK
1.2          (anfilat  15-Jun-02):      XCHG EAX, [ESP]
1.2          (anfilat  15-Jun-02):      RET
1.2          (anfilat  15-Jun-02): END-CODE

--
 ~ygrek

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

Yuriy Zhilovets
ygrek пишет:

>Если я правильно понимаю, то это определяется целиком поведением самого xt который
>оборачивается в callback (сколько он параметров съест), а прослойка _WNDPROC-CODE от
>этого не зависит (и я так уже успел даже в доку написать :)
>
А аргументы самого CALLPROC:  ? их три штуки, вот они и оставляются на
стеке (реально не они, а просто стек корректируется).

Ю. Жиловец


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

ygrek-3
On Sun, 20 Jul 2008 17:46:12 +0300
Yuriy Zhilovets <[hidden email]> wrote:

> ygrek пишет:
>
> >Если я правильно понимаю, то это определяется целиком поведением самого xt который
> >оборачивается в callback (сколько он параметров съест), а прослойка _WNDPROC-CODE от
> >этого не зависит (и я так уже успел даже в доку написать :)
> >
> А аргументы самого CALLPROC:  ? их три штуки, вот они и оставляются на
> стеке (реально не они, а просто стек корректируется).

Не понял. У callback: -- 2 аргумента. А #12 это похоже какое-то смещение в кодофайле,
а не коррекция стека. Вообще после поверхностного осмотра асм кода мне кажется, что
sub #12 -- неправильно.

--
 ~ygrek

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

Yuriy Zhilovets

>Не понял. У callback: -- 2 аргумента. А #12 это похоже какое-то смещение в кодофайле,
>а не коррекция стека. Вообще после поверхностного осмотра асм кода мне кажется, что
>sub #12 -- неправильно.
>  
>
(2 аргумента + адрес возврата) * 4

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

ygrek-3
Hello,

Вообщем я в этом асме ни в зуб ногой.

Проверил на spf4posix (с code.google) :

:NONAME 0 ; 1 CELLS CALLBACK: q
 Ok
q

----------------------------------------------------------------
[Segmentation fault]  Code:1  Address:0858520B  Word:<not in the image>
At:00000000 UserData:0858520C ThreadID:B7E366B0 Handler:00000000
Stack: 0804831A 00000000 00000001 00000000 B7F85330 00000000
Return stack:
BF9CF6D0:  0858007B <not in the image>
BF9CF6D4:  00000000 <not in the image>
BF9CF6D8:  0806AE68 INTERPRET
BF9CF6DC:  0806B0C8 MAIN1
BF9CF6E0:  0805310E CATCH
BF9CF6E4:  BF9CF6F4 <not in the image>
BF9CF6E8:  BF9D06B4 <not in the image>
BF9CF6EC:  0806B113 QUIT
----------------------------------------------------------------

--
 ~ygrek

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (204 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

Andrey Cherezov
In reply to this post by ygrek-3
Добрый день, ygrek!

Ну раз никто не сознается и не объясняет необходимость этого изменения,
то давайте вернем обратно? У меня тоже глюки исправляются при возврате
к исходной версии, конкретно в ~ac/lib/lin/xml/expat.f, сильно завязанной на
callbacks (я её просто раньше на linux'е не испытывал, а сейчас добавил
в заголовок "ALSO SO NEW: libexpat.so", испытал на debian и убедился, что
вариант с LEA годится, а SUB - нет).

Ваше сообщение от 20.07.2008 15:43:

>  Обнаружил что CALLBACK: в spf/linux не работает.
>  Определение _WNDPROC-CODE в posix/api.f отличается от
> win/spf_win_api.f одной строчкой. Исправление этой строчки возвращает
> работоспособность callback'ов.
>  Для чего появилось это отличие?
>
> ygrek@lemon:~/work/forth/spf/src/posix$ cvs diff -u api.f
> -     SUB  EBP, # 12
> +     LEA EBP, -4 [EBP]
>  


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: spf/linux CALLBACK:

ygrek-3
On Mon, 21 Jul 2008 14:32:49 +0300
Andrey Cherezov <[hidden email]> wrote:

> Ну раз никто не сознается и не объясняет необходимость этого изменения,
> то давайте вернем обратно? У меня тоже глюки исправляются при возврате
> к исходной версии, конкретно в ~ac/lib/lin/xml/expat.f, сильно завязанной на
> callbacks (я её просто раньше на linux'е не испытывал, а сейчас добавил
> в заголовок "ALSO SO NEW: libexpat.so", испытал на debian и убедился, что
> вариант с LEA годится, а SUB - нет).

Закоммитил "исправление".

--
 ~ygrek

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev

attachment0 (204 bytes) Download Attachment
Loading...