2010-10-01 10 views
7

कुछ लिंक के माध्यम से जाने के बाद मुझे पता चला कि पर्ल संकलन करता है और एक मध्यवर्ती बाइट कोड बनाता है और फिर उस बाइट कोड की व्याख्या करता है। मेरा सवाल यह है कि वह बाइट कोड कहां रहता है?पर्ल अपने इंटरमीडिएट बाइट कोड कहां स्टोर करता है?

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

उत्तर

18

संकलन का परिणाम स्मृति में ऑपकोड्स के पेड़ के रूप में संग्रहीत किया जाता है, या कम के लिए ऑप्ट्री। इस कार्यक्रम को आपके प्रोग्राम को निष्पादित करने के लिए पर्ल के रनटाइम द्वारा चलाया जा रहा है।

आपको शायद "Compiled Code" section of perlguts दिलचस्प लगेगा। यह एक पर्ल ऑप्ट्री निष्पादित करने के निर्माण के कई विवरण बताता है।

यह लिखने के लिए भी संभव है कि डिस्क पर ऑप्ट्री करें और इसे B::C वितरण और ByteLoader मॉड्यूल में उपयोग किए गए मॉड्यूल का उपयोग करके फिर से लोड करें। हालांकि, यह तकनीक कई कार्यक्रमों पर अच्छी तरह से काम नहीं करती है, इसलिए किसी भी तरह से इसकी अनुशंसा नहीं की जाती है।

+0

क्या आपको पता है कि नामस्थान को अपरिवर्तित करना ओप कोड छोड़ देता है? –

2

यह इसे AST के रूप में स्मृति में संग्रहीत करता है।

+2

जबकि रोमांचक काम है, ज्यादातर जेरार्ड गोसेन द्वारा संचालित, वास्तव में एक अमूर्त वाक्यविन्यास पेड़ को perl देने के लिए, वर्तमान में यह एक नहीं है। – rafl

+2

इसके अलावा, आपको बाइट कोड के लिए एएसटी की आवश्यकता क्यों होगी? एक एएसटी, चूंकि यह _Syntax_ के बारे में है, केवल उन भाषाओं के लिए प्रासंगिक है जिनके पास वास्तविक वाक्यविन्यास है, उदा। पर्ल स्रोत कोड। – MSalters

+2

यह केवल पर्ल 6 के लिए सच है। पर्ल 5 के लिए नहीं। इसके अलावा एएसटी * बाइटकोड * स्टोर नहीं करता है। यह * बाइटकोड * उत्पन्न * करने के लिए इस्तेमाल किया जा सकता है। – dolmen

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