Bir alıştırma olarak, bu meydan okuma için x86 Montaj Dili'nde basit bir çözüm oluşturdum . Bunu Windows'ta FASM ile çalıştırıyorum. İşte kaynak kodum:
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'
Bunu derlediğimde, beklediğimden daha büyük bir yürütülebilir dosya alıyorum. İşte bir hexdump:
Kod bölümü ile veri ve kütüphane içe aktarma bölümleri arasında çok fazla boş alanın yanı sıra, kodda gömülü "Bu program DOS modunda çalıştırılamaz" diyen bir ileti olduğunu fark ettim. Kaynak kodumu Code Golf için uygun olan küçük bir dosyaya nasıl monte edebilirim?
Bir yan not olarak, stdout
içe aktarmadan msvcrt
ve çağırmadan yazdırmanın daha iyi yolları için öneriler printf
bekliyoruz.