|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
Уменьшение размера EXE
Открываю я делфи (XE). Убираю юнит. В файле проекта убираю все строчки, кроме Begin и End. Лезу в настройки компиляции. Убираю все, что можно убрать (все проверки, дебаг инфу и т.д.) и нажимаю CTRL+F9. Получаю файл весом в 20кб.
Далее открываю екзешник дизассемблером IDA PRO и ужасаюсь... делфа по умолчанию пишет такую тучу функций, что становится плохо. Такой вопрос: можно ли заставить делфу рачительнее относиться к коду? Ведь одно дело если я пишу используя их стандартные библы, и совершенно другое, если я хочу написать на чистом WinAPI. Visual Studio например умещает пустой файл в 6-7кб (хотя я считаю, что это тоже многова-то), значит в этом по идеи нет ничего особенно сложного. jmp $ ; Happy End! The Cake Is A Lie. |
#2
|
|||
|
|||
Не получится.
Дело в том, что по умолчанию включается в проект модуль System. Все, что в нем, будет в бинарнике. С другой стороны, если бы будешь писать что-то более-менее большое, то эти 20 кб потом все-равно будут незаметны на фоне остального кода, так что особо напрягаться не стоит. |
#3
|
||||
|
||||
В IDA PRO код примерно такой:
Код:
push ebp .itext:004050AD mov ebp, esp .itext:004050AF add esp, 0FFFFFFF0h .itext:004050B2 mov eax, offset dword_40406C .itext:004050B7 call @Sysinit@@InitExe$qqrpv ; Sysinit::__linkproc__ InitExe(void *) .itext:004050BC call sub_40370C В то время как чистый проект после плясок с бубном в VS10 (оказалось он сжимается до 2кб) выглядит как Код:
push 0 call Exit_Process Может можно убрать систем? jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
||||
|
||||
Люблю я такие темы .
Ниже исходник окна на делфи без модулей на Api + сжатие итого = 1.3кб Запускать батник для компиляции. http://zalil.ru/30663794 If end Then begin; |
#5
|
||||
|
||||
Во, другое дело, спасибо
А скажите пожалуйста, есть ли возможность поменять командную строку запуска в делфе, чтоб не делать батник? jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
Код в MinProg.dpr компилируется с помощью компилятора
DCC32.exe + необходимые модули SysInit.pas и System.pas потом готовая ехешка сжимается FSG.exe Вышеперечисленную последовательность действий делает батник. Так что без него некуда. Делфи вобще может и не быть установленный на компе, всё что нужно находиться в архиве. Если просто откомпилировать в Delphi а потом сжать FSG то выходит 7.3кб If end Then begin; Последний раз редактировалось AND_REY, 13.03.2011 в 20:18. |