Программа на Си в 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

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

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

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