HelloAssembly: el ejecutable de Windows más pequeño del mundo

HelloAssembly The smallest possible complete Windows application

HelloAssembly: el ejecutable de Windows más pequeño del mundo

HelloAssembly es un proyecto que busca crear la aplicación de Windows más pequeña posible, sin compresión, pero funcional: con bucle de mensajes, barra de título, botones de minimizar, maximizar y cerrar, menú de sistema, y que pinte el fondo y un texto centrado. El repositorio incluye varias versiones optimizadas en ensamblador x86, desde la original hasta una con cabecera PE escrita a mano, logrando tamaños de hasta 383 bytes. Se advierte que los antivirus pueden detectar estos ejecutables como malware debido a las técnicas agresivas de optimización.

El objetivo de este proyecto es hacer la aplicación más pequeña posible, sin compresión, que tenga las siguientes características: ejecute un bucle de mensajes de Windows, tenga barra de título, botones de minimizar, maximizar y cerrar, todos funcionando como se espera, y pinte el fondo y un texto centrado igual o más grande que 'Dave's Tiny App'.
  1. rfgplk

    "más pequeño posible" es exactamente una instrucción; posiblemente 0xc3 [ret] o 0x90 [nop]; el problema radica en cómo defines "aplicación completa de Windows", porque la respuesta realmente difiere dependiendo de si quieres hacerla compatible con la ABI. Pero no hay nada que te impida crear un cargador/ejecutor personalizado que lea un archivo binario puro, lo mapee como ejecutable y lo ejecute.

  2. abcd_f

    El programa más pequeño con significado para MS-DOS era exactamente 2 bytes:

    FA F4

    Eso es CLI HLT, que efectivamente bloqueaba la máquina. Tenía que guardarse como un archivo .com obviamente, no como un .exe.

  3. ggerules

    ¡Windows y ensamblador es un tema divertido!

    Poner los términos de búsqueda "Windows" y "lenguaje ensamblador" muestra todo tipo de libros. El que me hizo explorar inicialmente el tema (de 1993).... [0]

    Para un tratamiento más actualizado de ensamblador y Windows.... viene con código fuente para el IDE también. El libro de Ray Seyfarth [1].

    [0] Windows Assembly Language & Systems Programming: Object Oriented & Low-Level Systems Programming in Assembly Language for Windows 3.X

    [1] Introduction to 64 Bit Windows Assembly Language Programming: Fourth Edition

    ISBN-13: 978-1543138849, ISBN-10: 1543138845

  4. delta_p_delta_x

    Interesante evitar el CRT y trabajar directamente contra la API de Windows. Dicho esto, estos dependen de USER.32.DLL y KERNEL32.DLL para hacer la mayor parte del trabajo pesado.

    Es un poco como el 'hola mundo más pequeño en ensamblador' pero el código solo está configurando la convención de llamada y luego pasando la cadena de caracteres terminada en cero a `write`. Genial, pero eso también se podría hacer de manera más directa en C. Mucho ensamblador (incluido el del repositorio enlazado) es contabilidad para la convención de llamada de la plataforma.

  5. haunter

    Mientras tanto, en el mundo Unix puedes llegar a tan solo 45 bytes https://www.muppetlabs.com/~breadbox/software/tiny/teensy.ht...

Más de este día

2026-08-25