|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Oleg Drokin 2:5020/400 23 May 2003 12:39:17 To : "Martynenko Sergey" Subject : Re: к тем, кто понял current.h -------------------------------------------------------------------------------- Hello! Martynenko Sergey <serjio@rosneft-tnp.ru> wrote: MS> точнее include/asm-i386/current.h MS> [skip] MS> __asm__("andl %%esp,%0; ":"=r" (current) : "" (~8191UL)); MS> [skip] MS> очевидно, это кулевый хацкертцкий прием MS> вместо 'jz' пользовать 'and' MS> или я ошибаюсь ? Мы вычисляем адрес нашего task_struct (thread_info в 2.5) которое лежит на дне стека. MS> - а если стек сильно заполниться ? Если стек заполнился, значит все умрут, причем наверняка еще до того. MS> (хотя чтоб ТАК заполниться ... 8-[ ] MS> с другой стороны, зачем его настолько MS> большим делать) 8K - вполне нормально. при 4k были проблемы с переполнением, помнится мне. MS> - а если мусор в esp ? То все умрут еще раньше, опять же ;) MS> или, будте так добры, скажите чайнику : MS> зачем там 'and' ? Адрес task_struct получаем, мы знаем что оно лежит в начале второй страницы (первой на самом деле, но зависит с какой стороны считать) MS> P.S. насколько мне кажется этим 'and'-ом MS> выражено что-то типа MS> if (esp != 0) MS> result = 8191UL MS> else MS> result = 0 Hет. Мы просто сбрасываем у %esp первые 13 бит: result = $esp & ~((1UL<<13)-1); Bye, Oleg --- ifmail v.2.15dev5 * Origin: Green's home news server (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/15550651fe5f2.html, оценка из 5, голосов 10
|