[devel] ncurses

Sir Raorn =?iso-8859-1?q?raorn_=CE=C1_binec=2Eru?=
Ср Апр 18 14:44:42 MSD 2001


Проблема в следующем - не работает 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);
}

и почему, когда я пересобирал курзи, у меня получилось:

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)...

Все из Spring2001...

-- 
                                      Regards, Sir Raorn.
,-----------------------------------.----------------------.
|   Registered Linux user #177282   |  ICQ UIN #68527095   |
`-----------------------------------^----------------------'
_______________________________________________
Devel mailing list
Devel на linux.iplabs.ru
http://www.logic.ru/mailman/listinfo/devel



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