Như một bài tập, tôi đã tạo ra một giải pháp đơn giản cho thử thách này , bằng Ngôn ngữ hội x86. Tôi đang chạy cái này với FASM trên Windows. Đây là mã nguồn của tôi:
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'
Khi tôi biên dịch cái này, tôi nhận được một tệp thực thi lớn hơn tôi mong đợi. Đây là một hexdump:
Tôi nhận thấy có rất nhiều khoảng trống giữa phần mã và phần nhập dữ liệu và thư viện, cũng như một thông báo "Chương trình này không thể chạy trong chế độ DOS" được nhúng trong mã. Làm cách nào tôi có thể tập hợp mã nguồn của mình thành một tệp nhỏ, phù hợp với Code Golf?
Là một lưu ý phụ, đề xuất cho các cách tốt hơn để in stdout
mà không cần nhập msvcrt
và gọi printf
được chào đón.