[devel] ncurses

Alexander Bokovoy =?iso-8859-1?q?ab_=CE=C1_avilink=2Enet?=
Ср Апр 18 14:57:26 MSD 2001


On Wed, Apr 18, 2001 at 02:44:42PM +0400, Sir Raorn wrote:
> Проблема в следующем - не работает nodelay(stdscr, TRUE/1) (на самом деле
> оно вообще не работает), хотя с wtimeout(stdscr, 0/-1) все OK...
> 
> Об'ясните мне пожалуйста, что это значит:
> 
> 00028a30 <nodelay>:
>    28a30:       55                      push   %ebp
>    28a31:       89 e5                   mov    %esp,%ebp
>    28a33:       8b 55 08                mov    0x8(%ebp),%edx
>    28a36:       85 d2                   test   %edx,%edx
>    28a38:       74 16                   je     28a50 <nodelay+0x20>
>    28a3a:       31 c0                   xor    %eax,%eax
>    28a3c:       83 7d 0c 01             cmpl   $0x1,0xc(%ebp)
>    28a40:       0f 94 c0                sete   %al
>    28a43:       48                      dec    %eax
>    28a44:       89 42 3c                mov    %eax,0x3c(%edx)
> >                                                   ^^^^^^^^^^
>    28a47:       31 c0                   xor    %eax,%eax
>    28a49:       eb 08                   jmp    28a53 <nodelay+0x23>
>    28a4b:       90                      nop
>    28a4c:       8d 74 26 00             lea    0x0(%esi,1),%esi
>    28a50:       83 c8 ff                or     $0xffffffff,%eax
>    28a53:       5d                      pop    %ebp
>    28a54:       c3                      ret
> 
> и как оно соответствует следующему коду:
> 
> int
> nodelay(WINDOW *win, bool flag)
> {
>     T((T_CALLED("nodelay(%p,%d)"), win, flag));
> 
>     if (win) {
>         if (flag == TRUE)
>             win->_delay = 0;
>         else
>             win->_delay = -1;
>         returnCode(OK);
>     } else
>         returnCode(ERR);
> }
Нормально соответствует. Какое, по Вашему, смещение у _delay в WINDOW?

> 
> и почему, когда я пересобирал курзи, у меня получилось:
> 
> 0002877c <nodelay>:
>    2877c:       55                      push   %ebp
>    2877d:       89 e5                   mov    %esp,%ebp
>    2877f:       8b 55 08                mov    0x8(%ebp),%edx
>    28782:       8a 45 0c                mov    0xc(%ebp),%al
>    28785:       85 d2                   test   %edx,%edx
>    28787:       74 18                   je     287a1 <nodelay+0x25>
>    28789:       3c 01                   cmp    $0x1,%al
>    2878b:       75 09                   jne    28796 <nodelay+0x1a>
>    2878d:       c7 42 24 00 00 00 00    movl   $0x0,0x24(%edx)
> >                                                   ^^^^^^^^^^
>    28794:       eb 07                   jmp    2879d <nodelay+0x21>
>    28796:       c7 42 24 ff ff ff ff    movl   $0xffffffff,0x24(%edx)
> >                                                          ^^^^^^^^^^
>    2879d:       31 c0                   xor    %eax,%eax
>    2879f:       eb 05                   jmp    287a6 <nodelay+0x2a>
>    287a1:       b8 ff ff ff ff          mov    $0xffffffff,%eax
>    287a6:       89 ec                   mov    %ebp,%esp
>    287a8:       5d                      pop    %ebp
>    287a9:       c3                      ret
> 
> Первый дамп это objdump --disassemble /lib/libncurses.so.5.2, второй
> то же самое на свежесобранные курзи (rpm -bc, потом objdump)...
Не вижу проблемы. Вы на какой архитектуре собирали?


-- 
Sincerely yours, Alexander Bokovoy 
  The Midgard Project    | ALT  Linux  Team | Minsk Linux Users Group
 www.midgard-project.org | www.altlinux.ru  |    www.minsk-lug.net 
-- You won't skid if you stay in a rut.
		-- Frank Hubbard
_______________________________________________
Devel mailing list
Devel на linux.iplabs.ru
http://www.logic.ru/mailman/listinfo/devel



Подробная информация о списке рассылки Devel