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

Discussion in 'WASM.BEGINNERS' started by gale1238, Dec 17, 2011.

  1. gale1238

    gale1238 New Member

    Blog Posts:
    0
    Joined:
    Mar 21, 2009
    Messages:
    72
    Хочу уменьшить размер программы.
    Code (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килобайта.
    Code (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

    Blog Posts:
    0
    Joined:
    Aug 8, 2007
    Messages:
    2,824
    gale1238
    ну это номане :)
     
  3. pashe4ka13

    pashe4ka13 New Member

    Blog Posts:
    0
    Joined:
    Oct 4, 2010
    Messages:
    263
    Секция как минимум на диске занимает 512 байт
     
  4. l_inc

    l_inc New Member

    Blog Posts:
    0
    Joined:
    Sep 29, 2005
    Messages:
    2,566
    gale1238
    Чтобы получить 1КБ, достаточно просто не выделять под импорт отдельную секцию.
    Чтобы получить меньше, нужно либо весь PE целиком самому описывать (т.е. без директивы format PE), либо ждать, пока автор удосужится добавить директивы для установки пользовательского выравнивания.
     
  5. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    gale1238
    здесь как уместить MessageBox в 97 байтов, правда на MASM и для WinXP