Опции компилятора
Есть небольшой проект на visualcpp. Скомпилил, размер выходного файла поразил -- Полметра!!! Отключил отладочную информацию=> стало чуток меньше. Дизасемблировал idapro и увидел то, что вообще далеко от истины.
Хотелось бы получить компактный код без
- использования оптимизации
- строк типа __cdeclspec(naked) [точно не помню как это записывается]
- чтоб компилятор не вставлял всякую херь типа CheckESP.
и прочую лабуду
[LEFT] Как этого добиться?
скорее всего никак.....ну если только не будешь ручками скомпиленный бинарик ковырять отладчиком и находу резать "ненужное";
в настройках visualCpp можно подредактировать подготовительный код,
но вот отключить его встраивание совсем - вроде бы нельзя
[LEFT] Как этого добиться?[/LIST][/LEFT]
Настройками + правильным (оптимальным) написанием кода.
в настройках visualCpp можно подредактировать подготовительный код,
но вот отключить его встраивание совсем - вроде бы нельзя
Что ты подразумеваешь под "подготовительный код" ?
start-up code в смысле :)
2Te0reTiK:
для visual c лежит тут:
\Microsoft Visual Studio\VC98\CRT\SRC под именами crt*.*
(у "старших" версий тоже где то тут должен лежать по идее)
для дельфи где лежит - не знаю...
Убрав его, надо будет отказаться от всего RTL.
так я о том и говорю, что изначальная задача автора этой темы "нерешаемая", и что в ехе будет полный код, а не только его прога
(если я всё правильно понял, если нет извините за оффтоп)
Близкий к сгенерированному ассемблерном. В принципе c++ генерит хороший код [COLOR="Gray"]если не учитывать вспомогательные вызовы.[/COLOR]. Беда в том что компилятор вставляет свои штучки(к примеру checkESP и т.д.). Хотя сейчас дизасемил прогу и код хороший(не нашел ничего подозрительного)
Я на асме писал–никак не меньше 1024 байт получалось
Alexandoros прав.
Вот ехе'шник !!!97!!! байт(скачан с wasm.ru). Там жесткие извращения над форматом РЕ.
А как правило программку на аsm'е меньше 1кб легко сделать(вообще-то так и получается).
...и физическое выравнивание секций (поле [IMAGE_OPTIONAL_HEADER]FILEALIGNMENT)
Нафига извращаться?
Слишком изъезженная тема для фана.
Но ведь никто об этом автору не сказал, верно?
Спасиб за ответы
1) Project -> Settings.. C/C++ в поле Project Options: измени /ML на /MD
2) в самом проекте впишы #pragma comment(linker, "/OPT:NOWIN98")
как получается 3 кб из 40 тебе подскажет PEiD v0.94 Build date: May 10, 2006 [snaker]