16

backpatching का मतलब क्या है? कृपया एक साधारण उदाहरण के साथ चित्रित करें।बैकपैचिंग का क्या अर्थ है?

+3

फिर से खोलने के लिए वोट दें। एक वास्तविक जवाब के साथ निश्चित रूप से एक वास्तविक सवाल। – EJP

उत्तर

15

बैक पैचिंग आमतौर पर कोड में लगाए गए आगे की शाखाओं को हल करने की प्रक्रिया को संदर्भित करता है, उदाहरण के लिए 'if' कथन पर, जब लक्ष्य का मूल्य ज्ञात हो जाता है, उदा। जब बंद ब्रेस या मिलान 'अन्य' का सामना करना पड़ता है।

+2

मैंने आपके आज की परीक्षा में आपके द्वारा प्रदान किया गया वही उत्तर लिखा था। :) –

11

एक कंपाइलर के मध्यवर्ती कोड जनरेशन चरण में हमें अक्सर उस कोड में स्थानों पर "कूदें" निर्देश निष्पादित करने की आवश्यकता होती है जो अभी तक मौजूद नहीं है। इस तरह के मामलों से निपटने के लिए उस निर्देश के लिए एक लक्षित लेबल डाला गया है। उत्पादन नियम में एक मार्कर nonterminal अर्थपूर्ण कार्रवाई लेने के लिए कारण बनता है।

1

बैकपैचिंग एक ऐसी प्रक्रिया है जिसमें एक आगे के संदर्भ वाले निर्देश के ऑपरेंड फ़ील्ड को प्रारंभ में खाली छोड़ दिया जाता है। आगे संदर्भ प्रतीक का पता इस क्षेत्र में रखा जाता है जब इसकी परिभाषा प्रोग्राम में सामने आती है।

2

बैकपैचिंग गेटो निर्देश के लिए खाली प्रविष्टियों को छोड़ने की प्रक्रिया है जहां लक्ष्य पते पहले पास में आगे हस्तांतरण में अनजान है और दूसरे अज्ञात में इन अज्ञात को भर रहा है।

0

बैक पैचिंग कोड जनरेशन प्रक्रिया के दौरान उपयुक्त अर्थात् अभिव्यक्ति का उपयोग करके लेबल की अनिर्दिष्ट जानकारी भरने की गतिविधि है।

  1. बूलियन अभिव्यक्ति:

    यह द्वारा किया जाता है।

  2. नियंत्रण कथन का प्रवाह।
+0

एक उदाहरण उपयोगी होना चाहिए –

+1

यह प्रवाह-नियंत्रण नियंत्रण बयान द्वारा किया जाता है। जब तक एक बुलियन अभिव्यक्ति भी प्रवाह-नियंत्रण नियंत्रण नहीं है, उदा। सी में '&&' या '||', यह नहीं होता है। – EJP

2

Backpatching: वाक्य रचना निर्देशित परिभाषा दो या अधिक पास (हम दोनों संश्लेषित गुण और गुण विरासत में मिला है) में लागू किया जा सकता है।

पहले पेड़ बनाएं।

गहराई-पहले क्रम में पेड़ को चलो।

एक पास में कोड पीढ़ी के साथ मुख्य कठिनाई यह है कि हम एक शाखा का लक्ष्य पता नहीं हो सकता है जब हम नियंत्रण बयान

के प्रवाह के लिए कोड उत्पन्न Backpatching तकनीक इस समस्या को हल पाने के लिए है। रिक्त लक्ष्य के साथ शाखा निर्देश जेनरेट करें जब लक्ष्य ज्ञात हो, शाखा निर्देशों (बैकपैचिंग) के लेबल को भरें।

1

सशर्त बयान, जबकि इत्यादि जैसे कुछ बयान मध्यवर्ती कोड उत्पन्न करते समय "अगर" और "गोटो" वाक्यविन्यास के समूह के रूप में प्रदर्शित किए जाएंगे। समस्या यह है कि, इन "गोटो" निर्देशों में, वैध संदर्भ शुरुआत में नहीं है (जब संकलक लाइन द्वारा स्रोत कोड लाइन पढ़ना शुरू करता है - A.K.A पहला पास)। लेकिन, पहली बार संपूर्ण स्रोत कोड पढ़ने के बाद, लेबल और संदर्भ ये "गोटो" इंगित कर रहे हैं, निर्धारित हैं।

समस्या यह है कि क्या हम एक एकल पास में "गोटो एक्स" कथन में एक्स को भरने में सक्षम कंपाइलर बना सकते हैं या नहीं? उत्तर हाँ है।

यदि हम बैकपैचिंग का उपयोग नहीं करते हैं, तो यह स्रोत कोड पर 2 पास विश्लेषण द्वारा हासिल किया जा सकता है। लेकिन, बैकपैचिंग हमें अलग सूची बनाने और पकड़ने की सुविधा देती है जिसे विशेष रूप से "गोटो" कथन के लिए डिज़ाइन किया गया है। चूंकि यह केवल एक पास में किया जाता है, पहला पास "गेटो एक्स" कथन में एक्स को भर नहीं पाएगा क्योंकि कॉमप्लर नहीं जानता है जहां एक्स पहली नज़र में है। लेकिन, यह उस विशिष्ट सूची में एक्स स्टोर करता है और पूरे कोड से गुज़रने के बाद और एक्स, एक्स उस पते या संदर्भ द्वारा प्रतिस्थापित किया जाता है।

+0

@EJP यह बहुत अच्छा होगा यदि आप यहां अपना कुछ ज्ञान जोड़ते हैं। धन्यवाद। :) – aligholamee

+0

क्यों? आप अपने उत्तर से क्या सोचते हैं? – EJP

संबंधित मुद्दे