Sebagai latihan, saya telah membuat solusi sederhana untuk tantangan ini , dalam Bahasa Assembly x86. Saya menjalankan ini dengan FASM di Windows. Ini kode sumber saya:
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'
Ketika saya kompilasi ini, saya mendapatkan executable lebih besar dari yang saya harapkan. Ini hexdump:
Saya melihat ada banyak ruang kosong antara bagian kode dan bagian impor data dan perpustakaan, serta pesan yang mengatakan "Program ini tidak dapat dijalankan dalam mode DOS" yang tertanam dalam kode. Bagaimana saya bisa merakit kode sumber saya ke file kecil, cocok untuk Code Golf?
Sebagai catatan tambahan, saran untuk cara mencetak yang lebih baik stdout
tanpa mengimpor msvcrt
dan menelepon printf
dipersilakan.