Como ejercicio, he creado una solución simple para este desafío, en x86 Assembly Language. Estoy ejecutando esto con FASM en Windows. Aquí está mi código fuente:
format PE console
entry start
include 'WIN32A.inc'
section '.text' code executable
start:
push char ; Start at 'A'
call [printf] ; Print the current letter 4 times
call [printf]
call [printf]
call [printf]
inc [char] ; Increment the letter
cmp [char], 'Z' ; Compare to 'Z'
jle start ; char <= 'Z' --> goto start
section 'r.data' data readable writeable
char db 'A', 10, 0 ; Stores the current letter
section '.idata' data readable import
library msvcrt, 'msvcrt.dll'
import msvcrt, printf, 'printf'
Cuando compilo esto, obtengo un ejecutable más grande de lo que esperaba. Aquí hay un hexdump:
Noté que hay mucho espacio vacío entre la sección de código y las secciones de importación de datos y biblioteca, así como un mensaje que dice "Este programa no se puede ejecutar en modo DOS" incrustado en el código. ¿Cómo puedo ensamblar mi código fuente en un archivo pequeño, adecuado para Code Golf?
Como nota al margen, las sugerencias sobre mejores formas de imprimir stdout
sin importar msvcrt
y llamar printf
son bienvenidas