कंपाइलर का फ्रंटएंड और बैकएंड | Frontend and Backend of Compiler in Compiler Design in Hindi


कंपाइलर का फ्रंटएंड और बैकएंड (Frontend and Backend of Compiler in Compiler Design)

कंपाइलर (Compiler) एक जटिल सॉफ़्टवेयर सिस्टम होता है जो उच्च स्तरीय प्रोग्रामिंग भाषा (High-Level Programming Language) में लिखे गए सोर्स कोड को मशीन कोड (Machine Code) में परिवर्तित करता है। इस प्रक्रिया को आसान बनाने के लिए कंपाइलर को दो मुख्य भागों में विभाजित किया जाता है:

  • फ्रंटएंड (Frontend)
  • बैकएंड (Backend)

1. कंपाइलर का फ्रंटएंड (Frontend of Compiler)

फ्रंटएंड कंपाइलर का वह भाग होता है जो सोर्स कोड को पढ़ता है, उसकी जाँच करता है, और इंटरमीडिएट रिप्रेजेंटेशन (Intermediate Representation) बनाता है।

फ्रंटएंड के मुख्य कार्य

  • लेक्सिकल एनालिसिस (Lexical Analysis): सोर्स कोड को टोकन्स (Tokens) में विभाजित करता है।
  • सिंटैक्स एनालिसिस (Syntax Analysis): सोर्स कोड की संरचना को जाँचा जाता है और सिंटैक्स ट्री (Parse Tree) बनाया जाता है।
  • सेमांटिक एनालिसिस (Semantic Analysis): कोड के अर्थ और लॉजिक की जाँच की जाती है।
  • सिंबल टेबल (Symbol Table): वेरिएबल्स, फंक्शन्स और आइडेंटिफ़ायर्स की जानकारी स्टोर करता है।
  • इंटरमीडिएट कोड जेनरेशन (Intermediate Code Generation): कोड को एक मध्यवर्ती रूप में परिवर्तित करता है जिससे बैकएंड इसे प्रोसेस कर सके।

फ्रंटएंड के इनपुट और आउटपुट

चरण इनपुट आउटपुट
Lexical Analysis Source Code Tokens
Syntax Analysis Tokens Parse Tree
Semantic Analysis Parse Tree Annotated Syntax Tree
Intermediate Code Generation Annotated Syntax Tree Intermediate Code

2. कंपाइलर का बैकएंड (Backend of Compiler)

बैकएंड कंपाइलर का वह भाग होता है जो इंटरमीडिएट कोड को ऑप्टिमाइज़ करता है और इसे मशीन कोड में बदलता है।

बैकएंड के मुख्य कार्य

  • कोड ऑप्टिमाइजेशन (Code Optimization): कोड की परफॉर्मेंस बढ़ाने के लिए इसे ऑप्टिमाइज़ करता है।
  • कोड जेनरेशन (Code Generation): ऑप्टिमाइज़ किए गए इंटरमीडिएट कोड को मशीन कोड में परिवर्तित करता है।
  • रजिस्टर एलोकेशन (Register Allocation): वेरिएबल्स और डेटा को CPU रजिस्टर में स्टोर करने की प्रक्रिया।
  • इंस्ट्रक्शन सिलेक्शन (Instruction Selection): CPU आर्किटेक्चर के अनुसार उपयुक्त मशीन निर्देशों का चयन।
  • इंस्ट्रक्शन शेड्यूलिंग (Instruction Scheduling): मशीन कोड को इस प्रकार व्यवस्थित करना जिससे निष्पादन तेज़ हो।

बैकएंड के इनपुट और आउटपुट

चरण इनपुट आउटपुट
Code Optimization Intermediate Code Optimized Code
Code Generation Optimized Code Machine Code
Register Allocation Machine Code Optimized Machine Code

3. कंपाइलर का मिडिलएंड (Middle-End of Compiler)

कुछ कंपाइलर में मिडिलएंड (Middle-End) भी शामिल होता है, जो फ्रंटएंड और बैकएंड के बीच एक ब्रिज की तरह कार्य करता है। इसका मुख्य कार्य कोड ऑप्टिमाइजेशन करना होता है।

मिडिलएंड के कार्य

  • सिंटैक्स ट्री को स्टैटिक एनालिसिस के लिए उपयोग करना।
  • लूप अनरोलिंग, कॉन्स्टेंट फोल्डिंग, और डेड कोड एलिमिनेशन जैसी तकनीकों का उपयोग करना।

फ्रंटएंड और बैकएंड के बीच मुख्य अंतर

फ्रंटएंड बैकएंड
यह स्रोत कोड का विश्लेषण करता है और इंटरमीडिएट कोड बनाता है। यह इंटरमीडिएट कोड को ऑप्टिमाइज़ करके मशीन कोड में बदलता है।
लेक्सिकल, सिंटैक्स, और सेमांटिक एनालिसिस करता है। कोड ऑप्टिमाइजेशन, रजिस्टर एलोकेशन और मशीन कोड जेनरेशन करता है।
प्रोग्रामर-फ्रेंडली डेटा संरचनाओं का उपयोग करता है। CPU-फ्रेंडली डेटा संरचनाओं का उपयोग करता है।
इंटरमीडिएट कोड आउटपुट देता है। फाइनल मशीन कोड आउटपुट देता है।

निष्कर्ष (Conclusion)

कंपाइलर को बेहतर तरीके से समझने के लिए इसे तीन भागों में बांटा जाता है - फ्रंटएंड, बैकएंड और मिडिलएंड। फ्रंटएंड स्रोत कोड को एनालाइज करता है, बैकएंड इसे मशीन कोड में बदलता है, और मिडिलएंड कोड ऑप्टिमाइजेशन करता है। ये सभी भाग मिलकर कंपाइलर को तेज़, कुशल और प्रभावी बनाते हैं।

Related Post