x86_64 मशीन कोड (लिनक्स), 175 99 76 बाइट्स
0000000000400080 <_start>:
400080: 66 bf 09 00 mov $0x9,%di
0000000000400084 <_table.L2>:
400084: 6a 0a pushq $0xa
400086: 89 fe mov %edi,%esi
0000000000400088 <_table.L3>:
400088: 89 f0 mov %esi,%eax
40008a: f7 e7 mul %edi
000000000040008c <_printInteger>:
40008c: 6a 20 pushq $0x20
40008e: 3c 0a cmp $0xa,%al
400090: 7d 02 jge 400094 <_printInteger.L1>
400092: 6a 20 pushq $0x20
0000000000400094 <_printInteger.L1>:
400094: 66 31 d2 xor %dx,%dx
400097: b3 0a mov $0xa,%bl
400099: 66 f7 f3 div %bx
40009c: 83 c2 30 add $0x30,%edx
40009f: 52 push %rdx
4000a0: 66 85 c0 test %ax,%ax
4000a3: 75 ef jne 400094 <_printInteger.L1>
4000a5: 6a 3d pushq $0x3d
4000a7: 66 57 push %di
4000a9: 80 04 24 30 addb $0x30,(%rsp)
4000ad: 6a 78 pushq $0x78
4000af: 66 56 push %si
4000b1: 80 04 24 30 addb $0x30,(%rsp)
4000b5: ff ce dec %esi
4000b7: 75 cf jne 400088 <_table.L3>
4000b9: ff cf dec %edi
4000bb: 75 c7 jne 400084 <_table.L2>
00000000004000bd <_printChars>:
4000bd: 66 ba 00 08 mov $0x800,%dx
4000c1: b0 01 mov $0x1,%al
4000c3: 66 bf 01 00 mov $0x1,%di
4000c7: 48 89 e6 mov %rsp,%rsi
4000ca: 0f 05 syscall
यह बाइनरी फ़ाइल का एक डंप है, और यह सभी 175 बाइट्स है। यह मूल रूप से एक ही दो छोरों को करता है जो सभी उत्तर करते हैं, लेकिन कंसोल पर मुद्रण थोड़ा कठिन है और मूल रूप से वर्णों को रिवर्स में ढेर पर प्रिंट करने के लिए धक्का देना पड़ता है, और फिर वास्तव में उन वर्णों को रखने के लिए एक (linux विशिष्ट) syscall बना रहा है स्टडआउट में।
मैंने अब इसे ऑप्टिमाइज़ कर दिया है ताकि केवल 1 लेखन ऑपरेशन (तेज!) किया जाए और इसमें जादुई संख्या (वाह!) हो और सिसकॉल बनाने से पहले पूरे परिणाम को स्टैक पर पीछे धकेल कर। मैंने एग्जिट रूटीन भी निकाला क्योंकि सही एग्जिट कोड की जरूरत किसे है?
यहाँ मेरे पहले और दूसरे प्रयास का लिंक दिया गया है , उनके मूल नैश सिंटैक्स में।
मैं किसी ऐसे व्यक्ति का स्वागत करता हूं जिसके पास कोई अन्य सुझाव है कि इसे कैसे सुधार किया जा सकता है। यदि कोई जिज्ञासु है तो मैं तर्क को और अधिक विस्तार से समझा सकता हूं।
(इसके अलावा, यह सभी कॉलमों को संरेखित करने के लिए अतिरिक्त स्थानों को प्रिंट नहीं करता है, लेकिन अगर यह आवश्यक है कि मैं तर्क को कुछ और बाइट्स की कीमत पर रख सकता हूं)।
संपादित करें: अब अतिरिक्त रिक्त स्थान प्रिंट करता है और नीचे और भी अधिक गोल्फ होता है! यह रजिस्टरों के साथ कुछ सुंदर पागल चीजें कर रहा है, और शायद अस्थिर है अगर इस कार्यक्रम का विस्तार किया जाना था।
for
छोरों के अलावा कुछ भी करने जा रहा है ? चुनौतीपूर्ण (दिलचस्प) हिस्सा कहाँ है?