|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Ian Dichkovsky 2:5020/400 20 Dec 2002 12:03:24 To : Valentin Nechayev Subject : Re: pentium optimization - Re: gentoo -------------------------------------------------------------------------------- Hello, Valentin! You wrote to Andrey Melnikov <Andrey.Melnikov@p116.f1340.n5030.z2.fidonet.org> on Thu, 19 Dec 2002 18:37:19 +0000 (UTC): VN> >>> Andrey Melnikov wrote: VN> ID>>>>> И между прочим, уже в Windows 95 в некоторых функциях ID>>>>> иструкции были специально расположены с рассчетом на выполнение ID>>>>> несколькими конвеерами Pentium'а </offtopic> ID>>> По памяти - там были приведены инструкции ID>>> mov ID>>> push ID>>> push VN> ID>>> Порядок - не помню. ID>>> Hадеюсь, моего слова достаточно ? AM>> Hет. как и примера. То, что ты нарисовал - стандартный способ AM>> передачи параметров через стек вызываемой процедуре. Взяв objdump и AM>> натравив на любой бинарь таких кусков кода ты столько найдешь.... VN> VN> Дело не в этом, а в том, как связаны аргументы команд. VN> VN> Hапример, стандартная компиляция сделает VN> VN> push %eax VN> movl 24(%ebp),%ecx VN> push %ecx VN> call zuka VN> VN> - то есть просто по логике - взяли, положили, взяли, положили..., а VN> компиляция под пень сделает VN> VN> movl 24(%ebp),%ecx VN> push %eax VN> push %ecx VN> call zuka VN> VN> то есть между 1-й и 3-й командой, между которыми связь - выход 1-й есть VN> вход 3-й - сделана промежуточная команда, и это как раз рассчитано на VN> первые пни с тем, что два УУ брали команды просто по очереди одну за VN> другой. VN> VN> Это было очень хорошо видно, например, когда Watcom заставляли генерить VN> код под пень. Hа gcc это видно хуже, но тоже при -mcpu=i586 можно такое VN> увидеть. VN> VN> Для позднейших процов это уже напрямую не нужно - и УУ таких больше (3, VN> 4, 6...), и добавлен блок логического переупорядочения команд, так что VN> процессор сам отслеживает связи между командами и выстраивает VN> независимые друг от друга цепочки. Спасибо! Выручили. Как раз напомнили. Там был блок с cmp .. mov push .. jz (jnz) ... call В общем, очень резко выделялось расстояние от cmp до jz(jnz). Best regards, Ian Dichkovsky, mailto: ntokay at org lviv net, ICQ 83146271 --- ifmail v.2.15dev5 * Origin: Ukranian Academic Research Network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/6477b93d6049.html, оценка из 5, голосов 10
|