[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Вопросы по созданию пакета.



On Sun, Sep 30, 2012 at 06:04:15PM +0400, "Артём Н." wrote:
> >>>>>>>> Кстати, а hardening (например, проверка стека) сильно влияет на производительность?
> >>>>>>> stackprotector - вряд ли заметно, pie - да на i386, остальное скорее вообще никак.
> >>>>>> Да, а на не 64-битных не влияет? Почему? Разве есть какие-то кардинальные отличия?
> >>>>> PIC/PIE занимает один регистр, который на i386 очень мало.
> >>>> Если не хватает регистров, он использует стэк?
> >>> Зависит.
> >>> Обычно наоборот, если есть свободные регистры, туда можно сунуть локальные
> >>> переменные вместо стека.
> >> В смысле, для вычисления адресов, при использовании PIE используется много
> >> регистров, а если они заняты, компилятору приходится гонять данные между стеком
> >> и регистрами. Потому на x86 и тормозит, а в x64 добавили регистры, так что их
> >> там хватает. Так?
> > Хм, я сейчас нашёл, что на amd64 и каких-нибудь других архитектурах вообще
> > не занимается регистр, т.к. достаточно уметь адресацию через %rip. На i386
> > да, всегда занят один регистр, там лежит адрес GOT.
> Хм... Так таблица смещений всё-равно должна быть, независимо от архитектуры?
Да, без дополнительного indirection (как это по-русски) не обойтись никак,
но на это какие-то совсем незначительные расходы.

> И, кстати, по-идее, PE базонезависимы, поскольку есть таблица релокаций, а ELF -
> нет (насколько я понял, PIE - это независимость от адреса загрузки образа)?
Я не в курсе, что происходит с DLL, если RVA недоступен, и так ли же это
затратно, как в non-PIC ELF (Дреппер намекает, что это дизайн ELF
виноват). Пишут, впрочем, что на x86_64 в PE тоже PIC.  PIC/PIE это
независимость от адреса загрузки образа, да.

-- 
WBR, wRAR

Attachment: signature.asc
Description: Digital signature


Reply to: