LINUX.ORG.RU

История изменений

Исправление 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 байт, но уже не запускается :(