Программа на Си в 1 КБ

Я покажу как скомпилировать программу на Microsoft Visual Studio 2013, размером в 1Кб.

автор: ice (coru.ws)

====== example 1 ======

Программа будет “сверхсложной”

Для компиляции я буду использовать makefile

Немного расскажу о структуре makefile

SRC, OUT, LIB – это переменные и могут называться как захотите

Для инициализации переменной используется такая запись SRC=main.cpp, а если ей захочется воспользоваться то нужно записывать вот в такой форме $(SRC)

Кроме переменных в файле есть метки “build” их может быть тоже сколько душе угодно.

За меткой идут команды, и перед каждой командой в строке должна стоять табуляция.

Параметры компилятора

  • /Fo – опция которая указывает директорию где будут создаваться объектные файлы
  •  /c – компиляция без связывания
  •  /GS- – проверка безопасности буфера отключена
  •  /Gz – stdcall конвенция вызова функций (по желанию)
  •  /TP – С++ язык программирования
  •  /Od – оптимизация отключена
  •  /W0 – уровень предупреждений
  •  /nologo – не выводить логотип

Параметры линкера

  •  /NOLOGO – не выводить логотип
  •  /OUT: – путь до выходного файла
  •  /NODEFAULTLIB – не использовать стандартные библиотеки
  •  /SUBSYSTEM:WINDOWS,5.01 – тип gui программа, с минимальной поддержкой xp
  •  /ENTRY:”entry” – точка входа (иначе студия генерирует свой стаб)
  • /DYNAMICBASE – aslr активировать
  •  /FIXED:No – генерировать релоки

Для компиляции используем nmake, для этого у студии есть батник “VS2013 x86 Native Tools Command Prompt”, запускам его переходим в папку с проектом, и компилируем: nmake build

Вот так выглядит точка входа программы после компиляции, почти как писать на ассемблере)

====== example 2 ======
Немного посложнее программа

makefile

так выглядит после компиляции

====== example 3 ======
В предыдущих вариантах компилировались программы без отладочных символов, но для отладки в студии они нужны, поэтому был создан более универсальный makefile

Теперь релизный проект можно компилировать nmake brelease, дебажный nmake bdebug

====== Примеры к статье ======

https://vxlab.info/files/minic-examples.7z

4 thoughts on “Программа на Си в 1 КБ

  1. Спасибо автор. цикл таких статей (VX) долгожданный и весьма актуальный! благодарю тебя.
    Еще былоб интересно услышать список литературы рекоммендуемый для прочитения.

Добавить комментарий