অনুশীলন হিসাবে, আমি x86 বিধানসভা ভাষায় এই চ্যালেঞ্জের জন্য একটি সহজ সমাধান তৈরি করেছি । আমি এটি উইন্ডোজ এফএএসএম দিয়ে চালাচ্ছি। এখানে আমার উত্স কোড:
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'
আমি যখন এটি সংকলন করি তখন আমার প্রত্যাশার চেয়ে একটি এক্সিকিউটেবল বড় হয়। এখানে একটি হ্যাক্সডাম্প:
আমি লক্ষ্য করেছি যে কোড বিভাগ এবং ডেটা এবং লাইব্রেরি আমদানি বিভাগগুলির মধ্যে প্রচুর খালি জায়গা রয়েছে, পাশাপাশি কোডটিতে এম্বেড থাকা "এই প্রোগ্রামটি ডস মোডে চালানো যাবে না" বলে একটি বার্তা রয়েছে। কোড গল্ফের জন্য উপযুক্ত, কীভাবে আমি আমার উত্স কোডটি একটি ছোট ফাইলটিতে একত্রিত করতে পারি?
পার্শ্ব নোট হিসাবে, stdout
আমদানি msvcrt
এবং কল না করে মুদ্রণের আরও ভাল উপায়গুলির জন্য পরামর্শগুলি printf
স্বাগত।