Указание минимального размера стекого кадра

Тема в разделе "WASM.BEGINNERS", создана пользователем lytic, 9 мар 2008.

  1. lytic

    lytic New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    20
    Проблема
    Как указать минимальный размер стекого фрейма в Visual Studio (для cl.exe)? Например 64 байта. Чтобы в прологе функции появилась строчка sub esp, 0x40.

    Предистория
    Есть прога, которая использует standart library, т.е. статическую lib. Причем в каждой функции изменены пролог/эпилог. А именно: установлен минимальный размер кадрого стека на 64 байта; добавлено сохранение регистров ebx, esi, edi. Когда я компилю такой файл и подключаю его к своей проге, то пролог и эпилог стандартные! Почему???
     
  2. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    lytic
    Стековый кадр зависит от количества и типов локальных переменных, а не от параметров компилера.
     
  3. lytic

    lytic New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    20
    Значит нельзя указать минимальный размер кадра!? Тогда как объясняеться разница в откомпилированных файлах? Как заставить компилятор запихать в каждый пролог увеличение кадра на 64 байта и сохранение регистров ebx, esi, edi?
    Может это дебаг-версия какая-то? Пробовал компилить с ключом /Zx. Нифига, всеравно все пусто!
     
  4. lytic

    lytic New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2008
    Сообщения:
    20
    :) пробовал только с Zd, Zi, а вот с ZI как раз и происходит сие творение!
     
  5. EvilPhreak

    EvilPhreak New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    154
    lytic
    Попробуй поигратся со значением выравнивания структур. Возможно локальные структуры выравниваются и кадр стека растет.