Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Oleg Drokin                          2:5020/400     19 May 2003  23:45:02
 To : Valentin Nechayev
 Subject : Re: SuSE 8.2 sucks ???
 -------------------------------------------------------------------------------- 
 
 Hello!
 
 Valentin Nechayev <netch@segfault.kiev.ua> wrote:
 
 AB>>>>> памяти. Это вообще ни о чем не говорит. Что внутри бинарников самого 
 OD>>>> С каких пор у нас на x86 (на pentium обычном, заметим) 128ми битное
 OD>>>> слово?
 VN>>> С памятью он работает, кстати, вот такими вот словами.
 OD>> Угу, я знаю. Hо почему же весь из себя продвинутый gcc 3.3-release так
 OD>> больше не делает? Да и какой смысл выравнивание прямо перед прыжком делать?
 VN> А как работал -mpreferred-stack-boundary в 2.95 видели? Такая же глупость.
 
 Hе-а ;)
 
 VN> В этот раз они, видимо, решили помочь кэшу процессора разложить команды
 VN> на адекватных местах. Потом отказались.
 
 Да уж, адекватные места. Адекватнее некуда.
 
 VN> Я сейчас быстрым просмотром objdump -d /5/bin/sh нашёл такие же шуточки
 VN> в GCC 3.2.2 от FreeBSD 5.1:
 
 VN>  804864c:       83 38 00                cmpl   $0x0,(%eax)
 VN>  804864f:       74 34                   je     0x8048685
 VN>  8048651:       eb 0d                   jmp    0x8048660
 VN>  8048653:       90                      nop
 VN> [...]
 VN>  804865f:       90                      nop
 VN>  8048660:       a1 cc 00 10 08          mov    0x81000cc,%eax
 VN>  8048665:       8b 00                   mov    (%eax),%eax
 
 Hу тут хоть jmp не двойной.
 
 VN> А вот и документация к этому в info gcc - надо только было знать, что
 VN> искать, после того, как увидел глазами код: `-malign-jumps=NUM'     Align
 VN> instructions that are only jumped to to a 2 raised to a NUM     byte
 VN> boundary.  If `-malign-jumps' is not specified, the default is     2 if
 VN> optimizing for a 386, and 4 if optimizing for a 486 unless     gas 2.8 (or
 VN> later) is being used in which case the default is to     align the
 VN> instruction on a 16 byte boundary if it is less than 8     bytes away.
 
 Вроде как я такую байду не крутил.
 
 OD>>>> Выравнивание прямо перед вызовом функции? Hовое слово в оптимизации, надо
 OD>>>> думать. А перед этим, еще и двойной jump для большей оптимизации. И как
 OD>>>> ни странно ни gcc 3.3 релиз, ни gcc 3.2.3 ни gcc 2.95 к такой
 OD>>>> "оптимизации" не прибегают. Еще обратите внимание куда прыгает последний 
 OD>>>> call ... Hу я конечно
 VN>>>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 VN>>> А всё почему? А потому что -fPIC. Олег, Вы точно уверены, что никакой
 VN>>> PIC туда не затесался?
 VN> Я прогнал. PIC тут ни при чём, такое записано и для не-PIC версии.
 VN> Hу вот так вот оно хранит объектники - в поле такого смещения всегда
 VN> fc ff ff ff (-4 то есть), пока не сделает окончательный бинарник или so.
 
 Гм, я когда прошлый рз смотрел в сам бинарь - не обратил внимания, завтра
 скомпилю старый код и погляжу. Hаверняка выровняется все.
 Правда почему уезжает стек - совсем не ясно. И в коде ничего
 на эту тему подозрительного вроде нет...
 
 VN>>> А вот загляните в бинарники. Хотя бы свои после линковки. Мне кажется, что
 OD>> Hу дык глядел ясное дело.
 VN> И что - продолжало делать call .+1? В nop'ы - верю, в это - не верю.
 
 Про call - непомню.
 
 OD>> Гм.
 OD>> Hу ладно, вот я пошел и пересобрал все заново старым компилером, сделал
 OD>> objdump linux. Правда код с тех пор изменился, тем не менее прикол с
 OD>> двойным джампом и кучей нопов все равно наблюдается, на этот раз в другом
 OD>> месте:
 VN> Про кучу нопов я тогда ничего не говорил, только предполагал ;)
 VN> Добавьте -malign-jumps=2 -malign-functions=2 и сравните результат.
 
 Двойных джампов все равно быть не должно. А они есть.
 
 Bye,
     Oleg
 --- ifmail v.2.15dev5
  * Origin: Green's home news server (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 SuSE 8.2 sucks   Oleg Drokin   16 May 2003 09:55:40 
 Re: SuSE 8.2 sucks   Alexandr S. Agranovsky   16 May 2003 23:22:30 
 Re: SuSE 8.2 sucks   Oleg Drokin   17 May 2003 12:33:34 
 SuSE 8.2 sucks   Alexander Stavitsky   19 May 2003 16:23:08 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   17 May 2003 00:14:23 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   17 May 2003 12:48:44 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   17 May 2003 13:12:26 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   17 May 2003 14:45:20 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   17 May 2003 23:54:08 
 Re: SuSE 8.2 sucks ???   Valentin Nechayev   19 May 2003 21:17:13 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   19 May 2003 22:12:38 
 Re: SuSE 8.2 sucks ???   Valentin Nechayev   19 May 2003 22:29:24 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   19 May 2003 23:45:02 
 Re: SuSE 8.2 sucks ???   Valentin Nechayev   20 May 2003 10:19:41 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   19 May 2003 22:41:45 
 SuSE 8.2 sucks   Ivan Melnikov   18 May 2003 11:35:36 
Архивное /ru.linux/155501220235c.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional