Come esercizio, ho creato una soluzione semplice per questa sfida, in x86 Assembly Language. Sto eseguendo questo con FASM su Windows. Ecco il mio codice sorgente:
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'
Quando compilo questo, ottengo un eseguibile più grande di quanto mi aspettassi. Ecco un hexdump:
Ho notato che c'è molto spazio vuoto tra la sezione del codice e le sezioni di importazione dei dati e della libreria, nonché un messaggio che dice "Impossibile eseguire questo programma in modalità DOS" incorporato nel codice. Come posso assemblare il mio codice sorgente in un piccolo file, adatto per Code Golf?
Come nota a stdout
margine, sono ben accetti suggerimenti su modi migliori per stampare senza importare msvcrt
e chiamare printf
.