Intermediate Code Generation: Boolean Expressions | इंटरमीडिएट कोड जनरेशन में बूलियन अभिव्यक्तियाँ


इंटरमीडिएट कोड जनरेशन में बूलियन अभिव्यक्तियाँ (Boolean Expressions in Intermediate Code Generation)

Boolean Expressions Compiler Design के Intermediate Code Generation चरण में अत्यंत महत्वपूर्ण भूमिका निभाती हैं। किसी भी प्रोग्राम में निर्णय-निर्माण (decision-making) जैसे if, while, for आदि स्टेटमेंट्स Boolean Expressions पर आधारित होते हैं। Compiler इन Boolean Expressions को Intermediate Representation (IR) में बदलता है ताकि वे बाद में Machine Code में प्रभावी रूप से अनुवादित की जा सकें।

परिचय (Introduction)

Boolean Expression वे अभिव्यक्तियाँ हैं जिनका परिणाम true या false होता है। Compiler इन Expressions का मूल्यांकन Conditional Jumps और Logical Operations के माध्यम से करता है।

उदाहरण:

if (a < b)
    c = a;
else
    c = b;

Intermediate Representation में इसे Conditional Jump Instructions के रूप में लिखा जाता है।

Boolean Expression के प्रकार

  • Relational Expressions — जैसे a < b, x >= y आदि।
  • Logical Expressions — जैसे (a < b) && (c > d), (a != 0) || (b == 1)।
  • Negation Expressions — जैसे !(a > b)।

Boolean Expressions के लिए Intermediate Representation

Compiler Boolean Expressions को Jump-Based Representation या Boolean Variables Representation के रूप में व्यक्त करता है।

1️⃣ Jump-Based Representation:

Boolean Expression का परिणाम Control Flow द्वारा नियंत्रित किया जाता है।

उदाहरण:

if (a < b) 
    x = 1;
else 
    x = 0;

Intermediate Code:

if a < b goto L1
x = 0
goto L2
L1: x = 1
L2:

2️⃣ Boolean Variable Representation:

Compiler एक Boolean Variable को 1 (true) या 0 (false) असाइन करता है।

b = (a < b)

Intermediate Code:

if a < b goto L1
b = 0
goto L2
L1: b = 1
L2:

Relational Operators और उनका Intermediate Code

OperatorMeaningIntermediate Form
<Less thanif a < b goto L1
>Greater thanif a > b goto L1
==Equal toif a == b goto L1
!=Not equal toif a != b goto L1
<=Less than or equalif a <= b goto L1
>=Greater than or equalif a >= b goto L1

Logical Operators और Short-Circuit Evaluation

Compiler Boolean Expressions के Evaluation में Short-Circuit नियमों का उपयोग करता है। इसका अर्थ है कि अगर किसी लॉजिकल एक्सप्रेशन का परिणाम पहले ही तय हो गया है, तो बाकी हिस्से को Evaluate नहीं किया जाता।

उदाहरण:

if (a < b && c < d)
    x = 1;
else
    x = 0;

Intermediate Code:

if a < b goto L1
goto L4
L1: if c < d goto L2
goto L4
L2: x = 1
goto L3
L4: x = 0
L3:

Boolean Expressions के लिए Backpatching

Backpatching एक तकनीक है जो Boolean Expressions में Jump Addresses को Compile-Time पर Placeholder के रूप में रखती है और बाद में उन्हें Final Addresses से बदल देती है।

उदाहरण:

if (a < b || c > d) 
    x = 1;
else 
    x = 0;

Intermediate Code:

if a < b goto L1
if c > d goto L1
goto L2
L1: x = 1
goto L3
L2: x = 0
L3:

Boolean Expressions और Control Flow Graphs

Compiler Boolean Expressions को Control Flow Graphs (CFG) में Nodes और Edges के रूप में प्रदर्शित करता है। True Branch और False Branch अलग-अलग Flow Paths को दर्शाते हैं।

Flow Graph:

  • Node 1 → Evaluate (a < b)
  • True Edge → Execute True Block
  • False Edge → Execute False Block

Intermediate Code Optimization

Boolean Expressions के लिए Compiler कई Optimization Techniques लागू करता है:

  • Dead Code Elimination — अनावश्यक Jump हटाना।
  • Constant Folding — Constant Conditions पहले से Evaluate करना।
  • Short Circuit Simplification — && और || ऑपरेटर्स के अनावश्यक Evaluations हटाना।

Boolean Expressions में Type Conversion

Boolean Expressions में Type Mismatch होने पर Compiler Implicit Conversion करता है ताकि Integer और Float Values को Logical रूप में बदला जा सके।

उदाहरण:

if (x)
   y = 1;
else
   y = 0;

Intermediate Code:

if x != 0 goto L1
y = 0
goto L2
L1: y = 1
L2:

निष्कर्ष (Conclusion)

Compiler Design में Boolean Expressions का Intermediate Code Generation चरण प्रोग्राम के नियंत्रण प्रवाह (control flow) को परिभाषित करता है। इन Expressions के माध्यम से Conditional Statements और Loop Constructs को मशीन-स्वतंत्र रूप में व्यक्त किया जाता है। Jump Instructions, Backpatching, और Short-Circuit Evaluation जैसी तकनीकें Compiler को अधिक कुशल और विश्वसनीय कोड बनाने में सक्षम बनाती हैं।

Related Post