सीखने की सभा से परे, मेरा मानना है कि यह सीखना कि सी जैसी निम्न-स्तरीय भाषा कैसे संकलित है, अत्यधिक मूल्यवान है। तो मेरा जवाब हां है, लेकिन फिर मैं शायद पक्षपाती हूं क्योंकि मुझे निम्न-स्तरीय प्रोग्रामिंग का आनंद मिलता है।
उदाहरण के लिए, बस यह समझना कि सरल कथन कैसे संकलित हैं। निम्नलिखित समारोह,
int func(int val)
{
int num = val * 5;
return num;
}
... (दिलचस्प सा कम से कम):
movl %edi, -20(%rbp)
movl -20(%rbp), %edx
movl %edx, %eax
sall $2, %eax
addl %edx, %eax
यह कोड स्टैक (वैल, पैरामीटर टू फंक) से तर्क लेता है, इसे बाएं 2 स्थानों पर शिफ्ट करता है (गुणा 2 ^ 2 या 4) और फिर परिणाम में मूल मूल्य जोड़ता है। अंतिम परिणाम 5 से गुणा है। इस तरह का एक उदाहरण संकलक अनुकूलन जैसी कई चीजों के बारे में बताता है। सीधे 5 से गुणा करने के लिए एक निर्देश को कॉल करने के बजाय, यह दो स्थानों को 4 से गुणा करने के लिए स्थानांतरित करता है और फिर मूल मूल्य जोड़ता है। मुझे इस तरह के उदाहरण मिले कि मैंने निचले स्तर पर चीजों की अपनी समझ को बेहतर बनाया।
-S
विकल्प के साथ gcc से कोडांतरक आउटपुट तैयार करें । हालांकि, ध्यान रखें कि परिणाम संकलक और अनुकूलन स्तर से भिन्न होंगे।
वैसे भी, मुझे नहीं लगता कि असेंबली लैंग्वेज प्रोग्रामर होना विधानसभा को समझने जैसा ही है । फिर, मुझे लगता है कि C जैसी भाषा में प्रोग्रामिंग करना और यह जानना कि यह मशीन कोड में कैसे डाला जाता है, एक मूल्यवान अभ्यास है।