Comments 25
Другое дело, добавление элементов и укладывание в 1K — такого я не пробовал. Я только рисовал в ресурсах, а код его обрабатывал.
1. Линуксовый true. Команда, которая ничего не делает но возвращает код успешного завершения. Может быть пустым, так как пустой шелл-скрипт считается успешно завершенным.
2. На какой-то древней платформе была особенность — после закрытия приложения память не очищалась. Таким образом, если память еще не была попорчена дргой программой, можно было передать управление на оставшийся в памяти код и «вернуться» в закрытую до этого программу, что было весьма круто в эпоху до многозадачности. Деталей не помню, но инструкция для перехода вряд ли занимала много места (дабы не попортить код, да).
Меньше и при этом чтоб делало что то полезное уже не сделать.
Соответственно строка параметров должна была быть исполняемым кодом.
Конечно на строку параметров накладывались ограничения, поэтому ничего сложного передать было нельзя, но некоторый несложный бинарный код запускать было можно.
Очень импонирует стиль изложения автора. Да и статья интересная получилась
Хех. Периодически встречаю такие статьи в сети, в стиле "делаем супер-бурбулятор всего за 5 кб". И возникал вопрос, что раз результат такой супер, то почему он не используется в реальных приложениях? Нужно обязательно попробовать, это будет круто! libc? Не, не слышали. Только хардкор.
Проект номер раз: dxPmdxConverter. Пока было без наворотов, влазило в 16кб. Здесь было: манифест (368 байт), загрузка форм из ресурсов (и соответственно возможность визуального их редактирования!), интерфейс на двух языках, быстрое чтение файлов через MemoryMappedFile. Потом захотелось кроссплатформенного PNG — это уже 32кб, т.к. библиотеку пришлось тащить с собой… Почти успех.
Проект номер два: Winter Novel — коммерческая игрушка, продающаяся в стиме (исходники не доступны). Все использованные данные конвертированы в Си-массивы и линкуются компилятором. Версия под Windows может собираться на чистом WinAPI. Максимально ужатая полная версия игры занимает порядка 350 кб. Туда вошли: TTF, libDUMB (воспроизведение трекерных IT-файлов). И это был полный провал. Пришлось реализовать большое количество функций из стандартной библиотеки. ЕХЕ с использованием стандартной библиотеки в итоге получается даже меньше. Кроме того, чистую WinAPI-версию люто ненавидят антивирусы. От сжатия пришлось отказаться вообще — кто-то из антивирусов неадекватно реагирует даже на UPX...
Да, жаль, что эти самые фреймворки такие тяжеловесные. Но увы, удобство разработки здесь в абсолютном большинстве случаев важнее.
Погоня за размером сейчас — это сугубо спортивный интерес, как и в демосцене.
Статья же о том, как написать маленькое приложение, а не о том, как запустить упаковщик, который, собственно, и создал маленький файл.
Этот же бинарник, сжатый, скажем, zip'ом — уже 1,27 Кб. Слинкованный crinkler'ом — 0,95 Кб.
Линкер MSVC — совсем неподходящий для описанных требований инструмент.
Давно баловался Delphi+kolmck приложения получались довольно маленькими в 30-300кб
GUI-приложение размером менее 1 Кб