История изменений
Исправление fsb4000, (текущая версия) :
Точно. Тогда вообще 2КБ остаётся.
Даже 1056 байт
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int WINAPI mainCRTStartup() {
char msg[] = "Hello World\n";
HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
WriteFile(stdout, msg, sizeof(msg), (DWORD[]){0}, NULL);
return 0;
}
clang -c -Oz main.c -nostdlib -ffreestanding -fno-stack-check -fno-stack-protector -mno-stack-arg-probe -o main.obj
link main.obj kernel32.lib /subsystem:console /nodefaultlib /align:16 /entry:mainCRTStartup /out:main.exe
Правда выдаётся предупреждение:
LINK : warning LNK4108: /ALIGN specified without /DRIVER; image may not run
Но работает, если не делать strip.
После strip main.exe
1008 байт, но уже не запускается :(
Исходная версия fsb4000, :
Точно. Тогда вообще 2КБ остаётся.
Даже 1056 байт
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
int WINAPI mainCRTStartup() {
char msg[] = "Hello World\n";
HANDLE stdout = GetStdHandle(STD_OUTPUT_HANDLE);
WriteFile(stdout, msg, sizeof(msg), (DWORD[]){0}, NULL);
return 0;
}
clang -c -Oz main.c -nostdlib -ffreestanding -fno-stack-check -fno-stack-protector -mno-stack-arg-probe -o main.obj link main.obj kernel32.lib /subsystem:console /nodefaultlib /align:16 /entry:mainCRTStartup /out:main.exe
Правда выдаётся предупреждение:
LINK : warning LNK4108: /ALIGN specified without /DRIVER; image may not run
Но работает, если не делать strip.
После `strip main.exe` 1008 байт, но уже не запускается :(