Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Опции компилятора

48K
30 мая 2009 года
Te0reTiK
7 / / 30.05.2009
Перешел на с++ с ассемблера.
Есть небольшой проект на visualcpp. Скомпилил, размер выходного файла поразил -- Полметра!!! Отключил отладочную информацию=> стало чуток меньше. Дизасемблировал idapro и увидел то, что вообще далеко от истины.
Хотелось бы получить компактный код без
    использования оптимизации
    строк типа __cdeclspec(naked) [точно не помню как это записывается]
    чтоб компилятор не вставлял всякую херь типа CheckESP.
    и прочую лабуду

    [LEFT] Как этого добиться?
[/LEFT]
41K
30 мая 2009 года
Mushik_Heart
28 / / 15.05.2009
А какого типа файл ты подразумеваешь под словами "компактный код"?
36K
30 мая 2009 года
temporary_user
50 / / 07.05.2009
Цитата: Te0reTiK
[LEFT] Как этого добиться?[/LIST][/LEFT]



скорее всего никак.....ну если только не будешь ручками скомпиленный бинарик ковырять отладчиком и находу резать "ненужное";
в настройках visualCpp можно подредактировать подготовительный код,
но вот отключить его встраивание совсем - вроде бы нельзя

3
31 мая 2009 года
Green
4.8K / / 20.01.2000
Цитата: Te0reTiK

[LEFT] Как этого добиться?[/LIST][/LEFT]


Настройками + правильным (оптимальным) написанием кода.

Цитата: temporary_user

в настройках visualCpp можно подредактировать подготовительный код,
но вот отключить его встраивание совсем - вроде бы нельзя


Что ты подразумеваешь под "подготовительный код" ?

36K
31 мая 2009 года
temporary_user
50 / / 07.05.2009
Цитата: Green
Что ты подразумеваешь под "подготовительный код" ?



start-up code в смысле :)

2Te0reTiK:
для visual c лежит тут:
\Microsoft Visual Studio\VC98\CRT\SRC под именами crt*.*
(у "старших" версий тоже где то тут должен лежать по идее)

для дельфи где лежит - не знаю...

3
31 мая 2009 года
Green
4.8K / / 20.01.2000
Цитата: temporary_user
start-up code в смысле :)


Убрав его, надо будет отказаться от всего RTL.

36K
01 июня 2009 года
temporary_user
50 / / 07.05.2009
Цитата: Green
Убрав его, надо будет отказаться от всего RTL.



так я о том и говорю, что изначальная задача автора этой темы "нерешаемая", и что в ехе будет полный код, а не только его прога

(если я всё правильно понял, если нет извините за оффтоп)

48K
01 июня 2009 года
Te0reTiK
7 / / 30.05.2009
А жаль что нельзя. Придется с этим смирится. Хотя помню как-то написал прогу с опциями link /align:16 /fixed /entry:main /subsystem:console так вроде ниче, около килобайта получилось. И еще разузнал если делать разбор параметров командной строки самостоятельно и писа'ть на чистом WinAPI то это тож сократит код. Последний вопросик - при дизасемблировании многих прог выяснилось, что они содержат(в окрестности точки входа) код call ___security_init_cookie - это что такое?
48K
01 июня 2009 года
Te0reTiK
7 / / 30.05.2009
Цитата: Mushik_Heart
А какого типа файл ты подразумеваешь под словами "компактный код"?



Близкий к сгенерированному ассемблерном. В принципе c++ генерит хороший код [COLOR="Gray"]если не учитывать вспомогательные вызовы.[/COLOR]. Беда в том что компилятор вставляет свои штучки(к примеру checkESP и т.д.). Хотя сейчас дизасемил прогу и код хороший(не нашел ничего подозрительного)

398
01 июня 2009 года
Alexandoros
630 / / 21.10.2005
Отключи crt , и код будет "ну просто очень чистым". От 512 байт ехе. С потерями некоторой ф-циональности языка.

Вон по теме ссылка.
http://forum.sources.ru/index.php?showtopic=139119&hl=
http://www.rsdn.ru/article/cpp/crt.xml
7
01 июня 2009 года
@pixo $oft
3.4K / / 20.09.2006
Эммм…насколько я помню из теории PE-файлов,никак не меньше 1024 байт получится(если не использовать всякие извращения.Впрочем,Visual studio никак не славится способностями к оптимизации и извращениям вообще).512 байт–это заголовок DOS и ещё что-то там,точно не помню уже.Информация о секциях вроде

Я на асме писал–никак не меньше 1024 байт получалось
398
01 июня 2009 года
Alexandoros
630 / / 21.10.2005
На асме самый маленький ехе можно получить чуть ли не размер ПЕ + пару байт. Это точно. На визуал студии - спорить не буду, давно дурью маялся, но 1кб это точно, а для 512байт, вроде, надо было размер секции покрутить.
48K
02 июня 2009 года
Te0reTiK
7 / / 30.05.2009
Цитата: Alexandoros
На асме самый маленький ехе можно получить чуть ли не размер ПЕ + пару байт. Это точно. На визуал студии - спорить не буду, давно дурью маялся, но 1кб это точно, а для 512байт, вроде, надо было размер секции покрутить.



Alexandoros прав.
Вот ехе'шник !!!97!!! байт(скачан с wasm.ru). Там жесткие извращения над форматом РЕ.

А как правило программку на аsm'е меньше 1кб легко сделать(вообще-то так и получается).

Цитата: Alexandoros
....а для 512байт, вроде, надо было размер секции покрутить.

...и физическое выравнивание секций (поле [IMAGE_OPTIONAL_HEADER]FILEALIGNMENT)

14
02 июня 2009 года
Phodopus
3.3K / / 19.06.2008
Цитата: Te0reTiK
Последний вопросик - при дизасемблировании многих прог выяснилось, что они содержат(в окрестности точки входа) код call ___security_init_cookie - это что такое?


Тыц! Вылезайте из асма в большой мир: ЦэПэПэ, Опера, Яндекс
Можно гугл. :)

3
02 июня 2009 года
Green
4.8K / / 20.01.2000
А теперь самывй главный вопрос: А нафига?
Нафига извращаться?
63
02 июня 2009 года
Zorkus
2.6K / / 04.11.2006
Скорее всего, just for fun.
3
03 июня 2009 года
Green
4.8K / / 20.01.2000
Цитата: Zorkus
Скорее всего, just for fun.


Слишком изъезженная тема для фана.

63
03 июня 2009 года
Zorkus
2.6K / / 04.11.2006
Цитата: Green
Слишком изъезженная тема для фана.


Но ведь никто об этом автору не сказал, верно?

14
03 июня 2009 года
Phodopus
3.3K / / 19.06.2008
Нэхай молодежь учится. Авось пригодится в дальнейшем. Лишь бы руки над.. ээ.. всмысле это лучше чем пить/курить/колоться имхо. А насчет мальнького экзешника на асме - тык это уже и не экзешник и не асм. Кто в теме тот меня поймет. Никто не помешает сделать линкер и компилятор для Сей производящий абсолютно такой же результат. И для дельфины, и для всего чего хошь. Ассемблер он вообще машинные коды в объектных модулях выдает, дальше - дело линкера боицца.
48K
05 июня 2009 года
Te0reTiK
7 / / 30.05.2009
Усе! Тему можно считать закрытой. Alexandoros расставил точки над "и"!!!
Спасиб за ответы
42K
08 июня 2009 года
injhdc28
30 / / 13.03.2009
Цитата:
Хотелось бы получить компактный код



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]

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог