Ещё раз о выравнивании секций...

Тема в разделе "LANGS.C", создана пользователем Praetor11, 13 окт 2009.

  1. Praetor11

    Praetor11 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2009
    Сообщения:
    80
    Во многих темах по уменьшению размера exe и dll файла путем уменьшения выравнивания файла (file flign) и установлению его значения 32. Соответсвенно у меня вопрос: хоть у кого-нибудь получалось создать ЗАПУСКАЕМЫЙ exe с таким выравниванием для WinNT (2000, XP и т.д.). Ну или вообще с выравниванием файла меньшим 512? Ну и по второму выравниванию тоже хотелось бы спросить. У линкера есть опция Section Alignment, по умолчанию она равняется 4096 байт, но её вроде как можно менять (правда уже при 2048 прога не запускается). Может ли кто-нибудь объяснить на что влияет это выравнивание и можно ли его уменьшить (жаль на размер выходного файла не влияет).
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    На форуме довольно много тем с объяснениями.
     
  3. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    у всех кто пробовал получалось )
    + у PECompact есть даже такая стандартная опция

    Влияет на разположение секций в памяти (за счет выравнивания) судя из названия), ну и на размер образа в целом, если меньше стандартного, то в ОС (с XP вроде, пусть поправит тот кто точно помнит) загрузчик откажется грузить, это справедливо для exe/dll

    Ну и еще нужно добавить то, что толку с этого нет обычно, разве что только NumberOfSections == 1
     
  4. Praetor11

    Praetor11 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2009
    Сообщения:
    80
    Скопилириовал я экзешку с file-align=32 и при попытке его запуска, загрузчик радостно сообшил, что моя программа не является приложением Win32...Не знаю мб у вас на других ОС, на других языках и компиляторах такое прокатывало..
     
  5. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Praetor11, у тебя 9x или извращённый линкер, который позволяет поставить filealign != sectionalign при sectionalign < 4096? Для MS Link после link /SUBSYSTEM:WINDOWS/ALIGN:16 /DRIVER foo.obj user32.lib получается вполне рабочий себе EXE-шник.
     
  6. Praetor11

    Praetor11 New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2009
    Сообщения:
    80
    Винда у меня ХП сп 3, линкер не позволяет ставить filealign > sectionalign, а 32/32 отлично линкует. Я на него вообще не жалуюсь. Он все собирает, вот только не запускается это потом)))
     
  7. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    У всех запускается, у тебя не запускается...
    Ну пример минимального приложения тогда в студию.