[devel] ncurses

Stanislav Ievlev =?iso-8859-1?q?inger_=CE=C1_linux=2Eru=2Enet?=
Ср Апр 18 14:59:35 MSD 2001


Непонятно в чем вопрос:
Про ncurses или ассемблер?
Изменения в коде после пересборки ... наверняка это было под другую 
архитектуру с другими флагами. Изменения судя по всему относятся к части 
инициализации в функции ... там код генерит лично gcc (не из исходного 
кода).
-----------------------
Stanislav Ievlev
<inger на altlinux.ru>

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);
> }
> 
> и почему, когда я пересобирал курзи, у меня получилось:
> 
> 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...
> 


----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20010418/2d125e61/attachment-0011.html>


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