уменьшить код на фасме

Тема в разделе "WASM.BEGINNERS", создана пользователем gale1238, 17 дек 2011.

  1. gale1238

    gale1238 New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2009
    Сообщения:
    72
    Хочу уменьшить размер программы.
    Код (Text):
    1. format PE GUI 4.0
    2. include '/fasm/include/win32a.inc'
    3. entry start
    4. section '.code' code readable executable
    5. start:
    6.         push eax
    7.         push eax
    8.         push eax
    9.         push eax
    10.     call [MessageBox]
    11. ret
    12. section '.idata' import data readable writeable
    13. library USER32,'USER32.DLL'
    14. import USER32,MessageBox,'MessageBoxA'
    На выходе получаю 1,5килобайта.
    Код (Text):
    1. extern _imp__MessageBoxA@16:dword
    2. .code
    3. start:
    4.         push eax
    5.         push eax
    6.         push eax
    7.         push eax
    8.     call _imp__MessageBoxA@16
    9.     ret
    10. end start
    После настройки компоновщика размер программы составляет 544байта.
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    gale1238
    ну это номане :)
     
  3. pashe4ka13

    pashe4ka13 New Member

    Публикаций:
    0
    Регистрация:
    4 окт 2010
    Сообщения:
    263
    Секция как минимум на диске занимает 512 байт
     
  4. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    gale1238
    Чтобы получить 1КБ, достаточно просто не выделять под импорт отдельную секцию.
    Чтобы получить меньше, нужно либо весь PE целиком самому описывать (т.е. без директивы format PE), либо ждать, пока автор удосужится добавить директивы для установки пользовательского выравнивания.
     
  5. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    gale1238
    здесь как уместить MessageBox в 97 байтов, правда на MASM и для WinXP