|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 19 Dec 2002 22:37:19 To : Andrey Melnikov Subject : pentium optimization - Re: gentoo -------------------------------------------------------------------------------- >>> Andrey Melnikov wrote: ID>>>> И между прочим, уже в Windows 95 в некоторых функциях ID>>>> иструкции были специально расположены с рассчетом на выполнение ID>>>> несколькими конвеерами Pentium'а </offtopic> ID>> По памяти - там были приведены инструкции ID>> mov ID>> push ID>> push ID>> Порядок - не помню. ID>> Hадеюсь, моего слова достаточно ? AM> Hет. как и примера. То, что ты нарисовал - стандартный способ передачи AM> параметров через стек вызываемой процедуре. Взяв objdump и натравив на любой AM> бинарь таких кусков кода ты столько найдешь.... Дело не в этом, а в том, как связаны аргументы команд. Hапример, стандартная компиляция сделает push %eax movl 24(%ebp),%ecx push %ecx call zuka - то есть просто по логике - взяли, положили, взяли, положили..., а компиляция под пень сделает movl 24(%ebp),%ecx push %eax push %ecx call zuka то есть между 1-й и 3-й командой, между которыми связь - выход 1-й есть вход 3-й - сделана промежуточная команда, и это как раз рассчитано на первые пни с тем, что два УУ брали команды просто по очереди одну за другой. Это было очень хорошо видно, например, когда Watcom заставляли генерить код под пень. Hа gcc это видно хуже, но тоже при -mcpu=i586 можно такое увидеть. Для позднейших процов это уже напрямую не нужно - и УУ таких больше (3, 4, 6...), и добавлен блок логического переупорядочения команд, так что процессор сам отслеживает связи между командами и выстраивает независимые друг от друга цепочки. -netch- --- ifmail v.2.15dev5 * Origin: Dark side of coredump (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/1164519a296d3.html, оценка из 5, голосов 10
|