Вот короткий C файл cu.c
:
int main(int argc, char **argv) {
(void)argc; (void)argv;
return 0;
}
Когда я компилирую его с помощью OpenWatcom в файл DOS .com, результат составляет почти 3 КиБ:
$ owcc -bcom -mcmodel=t -fno-stack-check -Os -s -march=i86 -W -Wall -Wextra -o cu.com cu.c
$ ls -l cu.com
-rwxr-x--- 1 pts pts 2938 Jun 20 19:26 cu.com
Наименьший возможный файл .com DOS, который делает то же самое (просто завершается), имеет длину 1 байт: он содержит единственную инструкцию ret
(байт 0xc3).
Как я могу скомпилировать мой cu.c
файл (с возможными некоторыми изменениями, меня не интересуют arg c или argv) в меньший файл DOS .com без библиотеки OpenWatcom C (lib c), предпочтительно меньше 100 байт? Я буду вызывать функции DOS API (int 0x21
) непосредственно из моей программы, поэтому мне не понадобятся функции библиотеки OpenWatcom C.
Обратите внимание, что COM-исполняемые файлы с Open Watcom не отвечает на мой вопрос, потому что все представленные там решения включают библиотеку OpenWatcom C.