Почему не используется команда ENTER

Тема в разделе "WASM.WIN32", создана пользователем rpy3uH, 26 июл 2010.

  1. qwe8013

    qwe8013 New Member

    Публикаций:
    0
    Регистрация:
    28 май 2009
    Сообщения:
    198
    K10
    Это оптимизация на несколько байт, и октуальна она только если вы вирус пишете.
    А например в PE файлах FileAlignment "сожрёт" всю вашу оптимизацию по размеру.
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Правильно, и все эти loop, enter и т.п. и были придуманы в стародавние времена для сокращения размера кода. Судя по табличке (см.ссылку в #4) они и тогда (т.е. всегда) были достаточно тормозными, и расчитывать на то, что разрабы по прошествии лет сойдут с ума и начнут их как-то специально оптимизировать, мягко говоря, не приходится. Тем более, что в отношении loop это весьма проблематично, т.к. она по дурной задумке\традиции не должна изменять флаги, а это в условиях out-of-order execution вызывает серьезную проблему "из той же оперы", что и inc\dec и прочие partial flags

    Что касается leave, то это просто пара эквивалентных микрооперций mov+pop и соотв-но особых проблем с ее реализацией нет, поэтому она и работает достаточно быстро (по кр.мере в P6 и AMD). Возможно и enter 0,0 можно было также "бесхитростно" реализовать через push+mov, но это видимо нафиг никому не нужно, как и сама enter ;) , и соотв-но все варианты enter отрабатывают "по полной (микро)программе"
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    leo
    Это проблемы компилятора. Зачем вобще SFC ?
    Это ведь замедляет и ограничивает в использовании одного регистра. Да и в безопасности это дыра, развертка SFC это альтернативный способ захвата кода.