बाईटकोड: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 23: Line 23:
*[[Index.php?title=एक्शन स्क्रिप्ट|एक्शन स्क्रिप्ट]] वर्चुअल मशीन (एवीएम) में निष्पादित होता है, जो फ्लैश प्लेयर और [[अडोबे एयर]] का हिस्सा है। एक्शनस्क्रिप्ट कोड सामान्यतः एक कंपाइलर द्वारा बायटेकोड प्रारूप में बदल दिया जाता है। संकलक के उदाहरणों में एक एडोब फ्लैश प्रोफेशनल में निर्मित और एक एडोब फ्लैश बिल्डर में निर्मित और [[Index.php?title=एडोब फ्लेक्स|एडोब फ्लेक्स]] एसडीके में उपलब्ध है।
*[[Index.php?title=एक्शन स्क्रिप्ट|एक्शन स्क्रिप्ट]] वर्चुअल मशीन (एवीएम) में निष्पादित होता है, जो फ्लैश प्लेयर और [[अडोबे एयर]] का हिस्सा है। एक्शनस्क्रिप्ट कोड सामान्यतः एक कंपाइलर द्वारा बायटेकोड प्रारूप में बदल दिया जाता है। संकलक के उदाहरणों में एक एडोब फ्लैश प्रोफेशनल में निर्मित और एक एडोब फ्लैश बिल्डर में निर्मित और [[Index.php?title=एडोब फ्लेक्स|एडोब फ्लेक्स]] एसडीके में उपलब्ध है।
* [[एडोब फ्लैश]] ऑब्जेक्ट्स
* [[एडोब फ्लैश]] ऑब्जेक्ट्स
[[BANCStar प्रोग्रामिंग भाषा]] लैंग्वेज, मूल रूप से एक इंटरफेस-बिल्डिंग टूल के लिए बायटेकोड लेकिन एक भाषा के रूप में भी इस्तेमाल किया जाता है
[[Index.php?title= बीएएनसी स्टार प्रोग्रामिंग भाषा|बीएएनसी स्टार प्रोग्रामिंग भाषा]] लैंग्वेज, मूल रूप से एक इंटरफेस-बिल्डिंग टूल के लिए बायटेकोड परंतु एक भाषा के रूप में भी उपयोग किया जाता है।
* [[बर्कले पैकेट फ़िल्टर]]
* [[बर्कले पैकेट फ़िल्टर]]
* बर्कले पास्कल<ref>{{cite web|last=G.|first=Adam Y.|title=बर्कले पास्कल|website=[[GitHub]] |date=2022-07-11|url=https://github.com/adamyg/berkeley_pascal|access-date=2022-01-08}}</ref>
* बर्कले पास्कल<ref>{{cite web|last=G.|first=Adam Y.|title=बर्कले पास्कल|website=[[GitHub]] |date=2022-07-11|url=https://github.com/adamyg/berkeley_pascal|access-date=2022-01-08}}</ref>
* [[बाइट कोड इंजीनियरिंग लाइब्रेरी]]
* [[बाइट कोड इंजीनियरिंग लाइब्रेरी]]
* सी टू [[जावा वर्चुअल मशीन]] कंपाइलर
* सी टू [[जावा वर्चुअल मशीन]] कंपाइलर
* [[सामान्य [[CLISP]]]] का सीएलआईएसपी कार्यान्वयन कई वर्षों तक केवल बाईटेकोड में संकलन करता था; हालाँकि, अब यह GNU लाइटनिंग की मदद से देशी कोड के संकलन का भी समर्थन करता है
* [[सामान्य [[CLISP]]]] का सीएलआईएसपी कार्यान्वयन कई वर्षों तक केवल बाईटेकोड में संकलन करता था; चूंकि, अब यह GNU लाइटनिंग की सहायता से देशी कोड के संकलन का भी समर्थन करता है।
*कॉमन लिस्प के [[सीएमयूसीएल]] और साइनीर कॉमन लिस्प कार्यान्वयन या तो मूल कोड या बायटेकोड के लिए संकलित कर सकते हैं, जो कहीं अधिक कॉम्पैक्ट है
*कॉमन लिस्प के [[सीएमयूसीएल]] और साइनीर कॉमन लिस्प कार्यान्वयन मूल कोड या बायटेकोड के लिए संकलित कर सकते हैं, जो कहीं अधिक संक्षिप्त है।
* [[सामान्य मध्यवर्ती भाषा]] को [[सामान्य भाषा रनटाइम]] द्वारा निष्पादित किया जाता है, जिसका उपयोग .NET भाषाओं जैसे C Sharp (प्रोग्रामिंग लैंग्वेज) द्वारा किया जाता है। C#
* [[सामान्य मध्यवर्ती भाषा]] को [[सामान्य भाषा रनटाइम]] द्वारा निष्पादित किया जाता है, जिसका उपयोग .NET भाषाओं जैसे C Sharp (प्रोग्रामिंग लैंग्वेज) द्वारा किया जाता है।
*Dalvik (सॉफ़्टवेयर) बायटेकोड, जिसे [[Android (ऑपरेटिंग सिस्टम)]] प्लेटफ़ॉर्म के लिए डिज़ाइन किया गया है, Dalvik (सॉफ़्टवेयर) द्वारा निष्पादित किया जाता है
*डलविक (सॉफ़्टवेयर) बायटेकोड, जिसे [[Index.php?title= ऐन्ड्रॉइड(ऑपरेटिंग सिस्टम)|ऐन्ड्रॉइड(ऑपरेटिंग सिस्टम)]] प्लेटफ़ॉर्म के लिए डिज़ाइन किया गया है, डलविक (सॉफ़्टवेयर) द्वारा निष्पादित किया जाता है।
* इनफर्नो (ऑपरेटिंग सिस्टम) के लिए डिज़ाइन किया गया डिस बायटेकोड, [[डिस वर्चुअल मशीन]] द्वारा निष्पादित किया जाता है
* इनफर्नो (ऑपरेटिंग सिस्टम) के लिए डिज़ाइन किया गया डिस बायटेकोड, [[डिस वर्चुअल मशीन]] द्वारा निष्पादित किया जाता है।
*[[एफिल (प्रोग्रामिंग भाषा)]] प्रोग्रामिंग भाषा के लिए एफिलस्टूडियो
*[[एफिल (प्रोग्रामिंग भाषा)]] प्रोग्रामिंग भाषा के लिए एफिलस्टूडियो होता है।
*EM, [[एम्स्टर्डम संकलक किट]] वर्चुअल मशीन का उपयोग मध्यवर्ती संकलन भाषा और आधुनिक बायटेकोड भाषा के रूप में किया जाता है
*EM, [[Index.php?title=एम्स्टर्डम कंपाइलर किट|एम्स्टर्डम कंपाइलर किट]] वर्चुअल मशीन का उपयोग मध्यवर्ती संकलन भाषा और आधुनिक बायटेकोड भाषा के रूप में उपयोग की जाती है।
*[[Emacs]] एक टेक्स्ट एडिटर है, जिसके अधिकांश कार्य [[Emacs Lisp]] द्वारा कार्यान्वित किए जाते हैं, इसकी [[लिस्प (प्रोग्रामिंग भाषा)]] की अंतर्निहित बोली है। इन सुविधाओं को बायटेकोड में संकलित किया गया है। यह आर्किटेक्चर उपयोगकर्ताओं को उच्च स्तरीय भाषा के साथ संपादक को अनुकूलित करने की अनुमति देता है, जो बायटेकोड में संकलित करने के बाद उचित प्रदर्शन देता है।
*[[Index.php?title=एमाक्स|एमाक्स]] एक टेक्स्ट एडिटर है, जिसके अधिकांश कार्यों को [[Index.php?title=एमाक्स लिस्प|एमाक्स लिस्प]] द्वारा कार्यान्वित किए जाते हैं, जो कि [[लिस्प (प्रोग्रामिंग भाषा)]] की अंतर्निहित बोली है। इन सुविधाओं को बायटेकोड में संकलित किया गया है। यह आर्किटेक्चर उपयोगकर्ताओं को उच्च स्तरीय भाषा के साथ संपादक को अनुकूलित करने की अनुमति देता है, जो बायटेकोड में संकलित करने के बाद उचित प्रदर्शन देता है।
* कॉमन लिस्प का [[एम्बेड करने योग्य सामान्य लिस्प]] इम्प्लीमेंटेशन बायटेकोड या सी कोड को कंपाइल कर सकता है
* कॉमन लिस्प का [[एम्बेड करने योग्य सामान्य लिस्प]] इम्प्लीमेंटेशन बायटेकोड या सी कोड को कंपाइल कर सकता है।
*कॉमन लिस्प प्रदान करता है a <code>disassemble</code> समारोह<ref>{{cite web|url=http://www.lispworks.com/documentation/HyperSpec/Body/f_disass.htm|title=सीएलएचएस: फंक्शन डिस्सेम्बल|website=www.lispworks.com}}</ref> जो किसी निर्दिष्ट फ़ंक्शन के अंतर्निहित कोड को मानक आउटपुट पर प्रिंट करता है। नतीजा कार्यान्वयन-निर्भर है और बाइटकोड को हल कर सकता है या नहीं भी कर सकता है। इसका निरीक्षण डिबगिंग और अनुकूलन उद्देश्यों के लिए उपयोग किया जा सकता है।<ref>{{cite web|url=https://lispcookbook.github.io/cl-cookbook/performance.html|title=प्रदर्शन ट्यूनिंग और टिप्स|website=lispcookbook.github.io}}</ref> [[स्टील बैंक कॉमन लिस्प]], उदाहरण के लिए, उत्पादन करता है:
*कॉमन लिस्प एक <code>डिस्सेम्बल</code>फंक्शन प्रदान करता है<ref>{{cite web|url=http://www.lispworks.com/documentation/HyperSpec/Body/f_disass.htm|title=सीएलएचएस: फंक्शन डिस्सेम्बल|website=www.lispworks.com}}</ref> जो मानक आउटपुट को एक निर्दिष्ट फ़ंक्शन के अंतर्निहित कोड को प्रिंट करता है। परिणाम कार्यान्वयन-निर्भर है और बाइटकोड को हल कर सकता है या नहीं भी कर सकता है। इसका निरीक्षण डिबगिंग और अनुकूलन उद्देश्यों के लिए उपयोग किया जा सकता है।<ref>{{cite web|url=https://lispcookbook.github.io/cl-cookbook/performance.html|title=प्रदर्शन ट्यूनिंग और टिप्स|website=lispcookbook.github.io}}</ref> [[स्टील बैंक कॉमन लिस्प]], उदाहरण के लिए, उत्पादन करता है:
<वाक्यविन्यास प्रकाश लैंग = लिस्प>
<वाक्यविन्यास प्रकाश लैंग = लिस्प>
(अलग करना '(लैम्ब्डा (एक्स) (प्रिंट एक्स)))
(अलग करना '(लैम्ब्डा (एक्स) (प्रिंट एक्स)))

Revision as of 13:32, 24 February 2023

बाइटकोड (जिसे पोर्टेबल कोड या पी-कोड भी कहा जाता है[citation needed]) एक सॉफ्टवेयर इंटरप्रेटर (कंप्यूटिंग) द्वारा कुशल निष्पादन के लिए डिज़ाइन किए गए निर्देश सेट का एक रूप है। मानव-पठनीय कोड [1]स्रोत कोड के विपरीत, बाइटकोड संक्षिप्त संख्यात्मक कोड, स्थिरांक और संदर्भ (सामान्य रूप से संख्यात्मक व्याख्यान) होते हैं जो प्रोग्राम वस्तुओ के प्रकार, स्कोप और नेस्टिंग डेप्थ जैसी चीजों का शब्दार्थ विश्लेषण (संकलक) करते हैं।

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

चूंकि बायटेकोड निर्देश सॉफ्टवेयर द्वारा संसाधित किए जाते हैं, वे मनमाने ढंग से जटिल हो सकते हैं, परंतु फिर भी अधिकांशतः पारंपरिक हार्डवेयर निर्देशों के समान होते हैं: वर्चुअल स्टैक मशीनें सबसे साधारण हैं, परंतु वर्चुअल रजिस्टर मशीनें भी बनाई गई हैं।[2][3] अभिलक्ष्य प्रतिरूपक के समान, अलग-अलग खंडों को अधिकांशतः अलग-अलग फ़ाइलों में संग्रहीत किया जा सकता है, परंतु निष्पादन के समय गतिशील रूप से लोड किया जाता है।

निष्पादन

एक बायटेकोड प्रोग्राम को एक बार में एक निर्देश को पदव्याख्या करके और सीधे निष्पादित किया जा सकता है। इस प्रकार का बाइटकोड दुभाषिया बहुत पोर्टेबल है। कुछ प्रणालियाँ, जिन्हें डायनेमिक ट्रांसलेटर या जस्ट-इन-टाइम (JIT) कंपाइलर कहा जाता है, रनटाइम पर आवश्यकतानुसार मशीन कोड में बायटेकोड का अनुवाद करती हैं। वर्चुअल मशीन को हार्डवेयर-विशिष्ट बनाता है मं बायटेकोड की पोर्टेबिलिटी को नहीं खोता है। उदाहरण के लिए, जावा (प्रोग्रामिंग भाषा) और स्मॉलटाक कोड को सामान्यतः जेआईटी को निष्पादन से पहले बाइटकोड को मशीन कोड में अनुवाद करने के लिए संकलित किया जाता है। यह एक प्रोग्राम चलाने से पहले देरी का परिचय देता है, जब बायटेकोड को देशी मशीन कोड में संकलित किया जाता है, परंतु सीधे स्रोत कोड की व्याख्या करने की तुलना में निष्पादन की गति में पर्याप्त संशोधन होता है, सामान्य रूप से परिमाण के एक क्रम (10x) के आसपास होता है। [4]

इसके प्रदर्शन लाभ के कारण, आज कई भाषा कार्यान्वयन प्रोग्राम को दो चरणों में निष्पादित करते हैं, पहले स्रोत कोड को बायटेकोड में संकलित करते हैं, और फिर बायटेकोड को वर्चुअल मशीन में पास करते हैं। जावा (प्रोग्रामिंग लैंग्वेज), राकू (प्रोग्रामिंग भाषा), पायथन (प्रोग्रामिंग लैंग्वेज), PHP, के लिए इस तरह की बायटेकोड आधारित वर्चुअल मशीनें हैं।[lower-alpha 1] Tcl, AWK और Forth (प्रोग्रामिंग लैंग्वेज) के लिए इस प्रकार की बायटेकोड आधारित वर्चुअल मशीनें हैं (चूंकि, फोर्थ को संभवतया ही कभी इस तरह से बायटेकोड के माध्यम से संकलित किया जाता है, और इसकी वर्चुअल मशीन इसके अतिरिक्त अधिक सामान्य है)। पर्ल और रूबी (प्रोग्रामिंग भाषा) 1.8 का कार्यान्वयन इसके अतिरिक्त स्रोत कोड से प्राप्त एक अमूर्त सिंटैक्स ट्री प्रतिनिधित्व को चलाकर काम करता है।

हाल ही में, V8 (जावास्क्रिप्ट इंजन)[1]और डार्ट (प्रोग्रामिंग भाषा)[7]के लेखकों ने इस धारणा को चुनौती दी है कि तेजी से और कुशल वीएम कार्यान्वयन के लिए इंटरमीडिएट बायटेकोड की आवश्यकता है। ये दोनों भाषा कार्यान्वयन वर्तमान में JIT संकलन को स्रोत कोड से मशीन कोड तक बिना किसी बायटेकोड मध्यस्थ के करते हैं।[8]


उदाहरण

  • एक्शन स्क्रिप्ट वर्चुअल मशीन (एवीएम) में निष्पादित होता है, जो फ्लैश प्लेयर और अडोबे एयर का हिस्सा है। एक्शनस्क्रिप्ट कोड सामान्यतः एक कंपाइलर द्वारा बायटेकोड प्रारूप में बदल दिया जाता है। संकलक के उदाहरणों में एक एडोब फ्लैश प्रोफेशनल में निर्मित और एक एडोब फ्लैश बिल्डर में निर्मित और एडोब फ्लेक्स एसडीके में उपलब्ध है।
  • एडोब फ्लैश ऑब्जेक्ट्स

बीएएनसी स्टार प्रोग्रामिंग भाषा लैंग्वेज, मूल रूप से एक इंटरफेस-बिल्डिंग टूल के लिए बायटेकोड परंतु एक भाषा के रूप में भी उपयोग किया जाता है।

  • बर्कले पैकेट फ़िल्टर
  • बर्कले पास्कल[9]
  • बाइट कोड इंजीनियरिंग लाइब्रेरी
  • सी टू जावा वर्चुअल मशीन कंपाइलर
  • [[सामान्य CLISP]] का सीएलआईएसपी कार्यान्वयन कई वर्षों तक केवल बाईटेकोड में संकलन करता था; चूंकि, अब यह GNU लाइटनिंग की सहायता से देशी कोड के संकलन का भी समर्थन करता है।
  • कॉमन लिस्प के सीएमयूसीएल और साइनीर कॉमन लिस्प कार्यान्वयन मूल कोड या बायटेकोड के लिए संकलित कर सकते हैं, जो कहीं अधिक संक्षिप्त है।
  • सामान्य मध्यवर्ती भाषा को सामान्य भाषा रनटाइम द्वारा निष्पादित किया जाता है, जिसका उपयोग .NET भाषाओं जैसे C Sharp (प्रोग्रामिंग लैंग्वेज) द्वारा किया जाता है।
  • डलविक (सॉफ़्टवेयर) बायटेकोड, जिसे ऐन्ड्रॉइड(ऑपरेटिंग सिस्टम) प्लेटफ़ॉर्म के लिए डिज़ाइन किया गया है, डलविक (सॉफ़्टवेयर) द्वारा निष्पादित किया जाता है।
  • इनफर्नो (ऑपरेटिंग सिस्टम) के लिए डिज़ाइन किया गया डिस बायटेकोड, डिस वर्चुअल मशीन द्वारा निष्पादित किया जाता है।
  • एफिल (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा के लिए एफिलस्टूडियो होता है।
  • EM, एम्स्टर्डम कंपाइलर किट वर्चुअल मशीन का उपयोग मध्यवर्ती संकलन भाषा और आधुनिक बायटेकोड भाषा के रूप में उपयोग की जाती है।
  • एमाक्स एक टेक्स्ट एडिटर है, जिसके अधिकांश कार्यों को एमाक्स लिस्प द्वारा कार्यान्वित किए जाते हैं, जो कि लिस्प (प्रोग्रामिंग भाषा) की अंतर्निहित बोली है। इन सुविधाओं को बायटेकोड में संकलित किया गया है। यह आर्किटेक्चर उपयोगकर्ताओं को उच्च स्तरीय भाषा के साथ संपादक को अनुकूलित करने की अनुमति देता है, जो बायटेकोड में संकलित करने के बाद उचित प्रदर्शन देता है।
  • कॉमन लिस्प का एम्बेड करने योग्य सामान्य लिस्प इम्प्लीमेंटेशन बायटेकोड या सी कोड को कंपाइल कर सकता है।
  • कॉमन लिस्प एक डिस्सेम्बलफंक्शन प्रदान करता है[10] जो मानक आउटपुट को एक निर्दिष्ट फ़ंक्शन के अंतर्निहित कोड को प्रिंट करता है। परिणाम कार्यान्वयन-निर्भर है और बाइटकोड को हल कर सकता है या नहीं भी कर सकता है। इसका निरीक्षण डिबगिंग और अनुकूलन उद्देश्यों के लिए उपयोग किया जा सकता है।[11] स्टील बैंक कॉमन लिस्प, उदाहरण के लिए, उत्पादन करता है:

<वाक्यविन्यास प्रकाश लैंग = लिस्प> (अलग करना '(लैम्ब्डा (एक्स) (प्रिंट एक्स)))

(लैम्ब्डा (एक्स)) के लिए disassembly
2436F6DF
850500000F22 टेस्ट EAX, [#x220F0000]; नो-आर्ग-पार्सिंग प्रवेश बिंदु
E5
8BD6 MOV EDX, ESI
E7
8B05A8F63624 MOV EAX, [#x2436F6A8]; #<प्रिंट के लिए FDEFINITION वस्तु>
ईडी
B904000000 MOV ECX, 4
F2
FF7504 पुश DWORD PTR [EBP+4]
F5
FF6005 JMP DWORD PTR [EAX+5]
F8
CC0A BREAK 10; त्रुटि जाल
एफए
02 बाइट #X02
एफबी
18 बाइट #X18; अमान्य-आर्ग-गणना-त्रुटि
एफसी
4F बाइट #X4F ; ईसीएक्स

</वाक्यविन्यास हाइलाइट>

निम्न-स्तरीय बायटेकोड को डिबग करने के लिए एक अंतर्निहित टूल का उपयोग करके संकलित कोड का विश्लेषण और जांच की जा सकती है। टूल को शेल से इनिशियलाइज़ किया जा सकता है, उदाहरण के लिए: <वाक्यविन्यास लैंग = पिकॉन> >>> इम्पोर्ट डिस # डिस - पायथन बाइट कोड के डिस्सेम्बलर को मेमोनिक्स में। >>> डिस.डिस ('प्रिंट (हैलो, वर्ल्ड!)')

 1 0 LOAD_NAME 0 (प्रिंट)
             2 LOAD_CONST 0 ('हैलो, वर्ल्ड!')
             4 कॉल_फंक्शन 1
             6 RETURN_VALUE

</वाक्यविन्यास हाइलाइट>

  • योजना 48 बायटेकोड दुभाषिया का उपयोग करके योजना का कार्यान्वयन
  • स्मॉलटाक भाषा के कई कार्यान्वयनों के बायटेकोड
  • पैरलैक्स प्रोपेलर#बिल्ट इन स्पिन बायटेकोड इंटरप्रेटर पैरालैक्स, इंक. (कंपनी) प्रोपेलर microcontroller में निर्मित
  • SQLite डेटाबेस इंजन SQL कथनों को पहले से आरक्षित बाइट-कोड प्रारूप में अनुवादित करता है।[19]*एप्पल स्वीट 16
  • टीसीएल
  • IBM i#TIMI का उपयोग IBM i प्लेटफ़ॉर्म पर कंपाइलर्स द्वारा किया जाता है।
  • टाइनी बेसिक#वर्चुअल मशीन में कार्यान्वयन
  • विजुअल फॉक्सप्रो बायटेकोड में संकलित करता है
  • Webविधानसभा
  • YARV और Rubinius रूबी के लिए (प्रोग्रामिंग भाषा)
  • ZCODE

यह भी देखें

टिप्पणियाँ

  1. PHP has just-in-time compilation in PHP 8,[5][6] and before while not on in the default version, had options like HHVM. For older versions of PHP: Although PHP opcodes are generated each time the program is launched, and are always interpreted and not just-in-time compiled.


संदर्भ

  1. 1.0 1.1 "Dynamic Machine Code Generation". Google Inc.