Generating Code from DAG in Compiler Design in Hindi | DAG से कोड जेनरेशन


DAG (Directed Acyclic Graph) से कोड जनरेशन क्या है?

Compiler Design में Directed Acyclic Graph (DAG) का उपयोग **Basic Blocks** से अधिक अनुकूल और प्रभावी कोड उत्पन्न करने के लिए किया जाता है। DAG रिप्रेजेंटेशन का उद्देश्य **Common Subexpression Elimination, Dead Code Elimination**, और **Code Optimization** करना होता है।

DAG से कोड जेनरेशन क्यों आवश्यक है?

  • यह **रेडंडेंट इंस्ट्रक्शंस** को हटाकर कोड को छोटा बनाता है।
  • यह **समान सब-एक्सप्रेशन्स** को पुन: उपयोग करता है जिससे गणना कम होती है।
  • यह **Code Optimization** में सहायता करता है।

DAG से कोड जनरेशन की प्रक्रिया

DAG से कोड जनरेशन करने के लिए निम्नलिखित चरण अपनाए जाते हैं:

  1. प्रोग्राम को **Basic Blocks** में विभाजित करें।
  2. Basic Block के लिए एक **DAG Graph** बनाएं।
  3. DAG से **ऑप्टिमाइज़्ड इंस्ट्रक्शंस** निकालें।
  4. इंस्ट्रक्शंस को मशीन कोड में परिवर्तित करें।

DAG से कोड जेनरेशन का उदाहरण

Example:

मान लीजिए, हमारे पास निम्नलिखित Basic Block है:

t1 = a + b
t2 = t1 * c
t3 = a + b
t4 = t3 * d
t5 = t2 + t4

इसका DAG Representation:

        +
      /     
     a     b
     |     |
     *     *
     |     |
     c     d
         /
        +

DAG से जेनरेट किया गया ऑप्टिमाइज़्ड कोड:

// Common subexpression elimination
t1 = a + b
t2 = t1 * c
t4 = t1 * d
t5 = t2 + t4

DAG से कोड जनरेशन के लाभ

लाभ विवरण
Common Subexpression Elimination समान गणनाओं को हटाकर **कम इंस्ट्रक्शंस** उत्पन्न करता है।
Dead Code Elimination गैर-आवश्यक कोड को हटाकर **स्मृति उपयोग** कम करता है।
Code Optimization प्रोग्राम का **Execution Time** कम करता है।

निष्कर्ष

DAG से कोड जनरेशन कंपाइलर के **Intermediate Code Optimization** के लिए एक महत्वपूर्ण प्रक्रिया है। यह **Common Subexpression Elimination, Dead Code Removal, और Code Optimization** तकनीकों का उपयोग करके कुशल मशीन कोड उत्पन्न करता है।

Related Post