удаление стекового фрейма (с++)

Тема в разделе "WASM.ZEN", создана пользователем cresta, 1 авг 2005.

  1. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Можно ли запретить компилятору вставлять инструкции

    push ebp

    mov ebp,esp

    в начале процедуры? Т.е. аналог option prologue : none.



    Если функция с входными параметрами: func(int p1, int p2), то указанные инструкции автоматом вставляются в код. Если входные параметры удалить, то вставляются другие инструкции: push esi/edi/ebx.



    Можно ли избавиться от этого?
     
  2. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Да, в Visual C++ можно через директиву __declspec(naked)



    Кстати, push edi/esi/ebx - это чтоб внутри функции можно было задействовать побольше регистров общего назначения и тем самым оптимизировать код по скорости (и размеру).
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Quantum



    Так оперативно ещё никто не отвечал: 1 мин 6 сек :)



    Спасибо за ссылку, а то cl /? ничего не дало.







    да они и так все задействованы в коде, кроме esp.



    Спасибо.