बाइनरी ट्रांसलेशन: Difference between revisions

From Vigyanwiki
No edit summary
 
(18 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{short description|Form of binary recompilation}}
[[कम्प्यूटिंग]] में, बाइनरी ट्रांसलेशन [[द्विआधारी पुनःसंयोजन|बाइनरी पुनःसंयोजन]] [[बाइनरी पुनर्संकलन|(बाइनरी पुनर्संकलन]][[)]] का एक रूप है, जहां [[निर्देशों]] के अनुक्रम को 'स्रोत' [[निर्देश समुच्चय|निर्देश सेट]] से 'लक्ष्य' निर्देश सेट में अनुवादित किया जाता है। [[निर्देश सेट सिम्युलेटर|निर्देश सेट अनुरूपण]] जैसे कुछ मामलों में, लक्ष्य निर्देश सेट स्रोत निर्देश सेट के समान हो सकता है, जो निर्देश अनुरेखण , प्रतिबंधी विच्छेद बिंदु और [[हॉट स्पॉट]] का पता लगाने जैसी परीक्षण और दोषमार्जन सुविधाएँ प्रदान करता है।
[[कम्प्यूटिंग]] में, द्विआधारी अनुवाद (द्विआधारी ट्रांसलेशन) [[द्विआधारी पुनःसंयोजन]] [[बाइनरी पुनर्संकलन|(द्विआधारी पुनर्संकलन]][[)]] का एक रूप है, जहां [[निर्देशों]] के अनुक्रम को 'स्रोत' [[निर्देश समुच्चय|निर्देश सेट]] से 'लक्ष्य' निर्देश सेट में अनुवादित किया जाता है। [[निर्देश सेट सिम्युलेटर|निर्देश सेट अनुरूपण]] जैसे कुछ मामलों में, लक्ष्य निर्देश सेट स्रोत निर्देश सेट के समान हो सकता है, जो निर्देश ट्रेस, प्रतिबंधी विच्छेद बिंदु और [[हॉट स्पॉट]] का पता लगाने जैसी परीक्षण और डिबगिंग सुविधाएँ प्रदान करता है।


दो मुख्य प्रकार स्थिर और गतिशील द्विआधारी अनुवाद हैं। अनुवाद हार्डवेयर (उदाहरण के लिए, [[CPU|सीपीयू]] में सर्किट द्वारा) या सॉफ्टवेयर में (जैसे कार्यावधि इंजन, स्थैतिक पुन: संयोजित, प्रतिद्वंद्वी) किया जा सकता है।
दो मुख्य प्रकार के स्थिर और गतिशील बाइनरी ट्रांसलेशन हैं। ट्रांसलेशन हार्डवेयर (उदाहरण के लिए, [[CPU|सीपीयू]] में परिपथ द्वारा) या सॉफ्टवेयर में (जैसे कार्यावधि इंजन, स्थैतिक पुन: संयोजित, प्रतिद्वंद्वी) किया जा सकता है।


== अभिप्रेरण ==
== अभिप्रेरण ==
द्विआधारी अनुवाद लक्ष्य प्लेटफॉर्म के लिए द्विआधारी की कमी, लक्ष्य प्लेटफॉर्म के लिए संकलित करने के लिए स्रोत कोड की कमी, या लक्ष्य प्लेटफॉर्म के लिए स्रोत को संकलित करने में अन्यथा कठिनाई से प्रेरित है।
बाइनरी ट्रांसलेशन लक्ष्य प्लेटफॉर्म के लिए बाइनरी की कमी, लक्ष्य प्लेटफॉर्म के लिए संकलित करने के लिए स्रोत कोड की कमी, या लक्ष्य प्लेटफॉर्म के लिए स्रोत को संकलित करने में अन्यथा कठिनाई से प्रेरित है।


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


== स्टैटिक द्विआधारी ट्रांसलेशन ==
== स्थिर बाइनरी अवुवाद ==
स्टैटिक द्विआधारी ट्रांसलेशन का उपयोग करने वाले अनुवादक का उद्देश्य एक [[निष्पादन]] योग्य के सभी कोड को कोड में बदलना है जो पहले कोड को चलाए बिना लक्ष्य आर्किटेक्चर पर चलता है, जैसा कि गतिशील द्विआधारी अनुवाद में किया जाता है। यह सही ढंग से करना बहुत कठिन है, क्योंकि अनुवादक द्वारा सभी कोड की खोज नहीं की जा सकती है। उदाहरण के लिए, निष्पादन योग्य के कुछ हिस्से केवल [[अप्रत्यक्ष शाखा]]ओं के माध्यम से ही पहुंच योग्य हो सकते हैं, जिसका मूल्य केवल रन-टाइम पर ही जाना जाता है।
स्थिर बाइनरी ट्रांसलेशन का उपयोग करने वाले अनुवादक का उद्देश्य एक [[निष्पादन]] [[योग्य फ़ाइल]] के सभी कोड को कोड में बदलना है जो पहले कोड को चलाए बिना लक्ष्य वास्तुकला पर चलता है, जैसा कि गतिशील बाइनरी ट्रांसलेशन में किया जाता है। यह सही ढंग से करना बहुत कठिन है, क्योंकि अनुवादक द्वारा सभी कोड की खोज नहीं की जा सकती है। उदाहरण के लिए, निष्पादन योग्य के कुछ हिस्से केवल [[अप्रत्यक्ष शाखा]][[ओं]] के माध्यम से ही पहुंच योग्य हो सकते हैं, जिसका मूल्य केवल कार्य अवधि पर ही जाना जाता है।


ऐसा ही एक स्टैटिक द्विआधारी ट्रांसलेटर यूनिवर्सल [[superoptimization]] [[पीपहोल अनुकूलन]] टेक्नोलॉजी ([[स्टैनफोर्ड विश्वविद्यालय]] से [[सौरव बंसल]] और एलेक्स ऐकेन द्वारा विकसित) का उपयोग करता है, संभवतः कई स्रोत और लक्ष्य जोड़े के बीच कुशल अनुवाद करने के लिए, काफी कम विकास लागत और लक्ष्य द्विआधारी के उच्च प्रदर्शन के साथ। पावरपीसी-to-x86 अनुवाद के प्रयोगों में, कुछ बायनेरिज़ ने मूल संस्करणों से भी बेहतर प्रदर्शन किया, लेकिन औसतन वे दो-तिहाई मूल गति से चले।<ref>{{cite conference |last1=Bansal |first1=Sorav |last2=Aiken |first2=Alex |title=Binary Translation Using Peephole Superoptimizers |book-title=Proceedings of the 8th USENIX conference on Operating systems design and implementation |date=December 2008 |pages=177–192 |url=https://www.usenix.org/legacy/events/osdi08/tech/full_papers/bansal/bansal.pdf}}</ref>
इस तरह का एक स्थिर बाइनरी ट्रांसलेशन सार्वभौमिक [[superoptimization|सुपरऑप्टिमाइज़र]] [[पीपहोल अनुकूलन|अवलोकन]] तकनीक ([[स्टैनफोर्ड विश्वविद्यालय]] से [[सौरव बंसल]] और एलेक्स ऐकेन द्वारा विकसित) का उपयोग संभावित रूप से कई स्रोत और लक्ष्य जोड़े के बीच कुशल ट्रांसलेशन करने के लिए करता है, जिसमें काफी कम विकास लागत और लक्ष्य बाइनरी का उच्च प्रदर्शन होता है। पावरपीसी-से-x86 ट्रांसलेशन के प्रयोगों में, कुछ बायनेरिज़ ने मूल संस्करणों से भी बेहतर प्रदर्शन किया, लेकिन औसतन वे दो-तिहाई मूल गति से ही चले सके।<ref>{{cite conference |last1=Bansal |first1=Sorav |last2=Aiken |first2=Alex |title=Binary Translation Using Peephole Superoptimizers |book-title=Proceedings of the 8th USENIX conference on Operating systems design and implementation |date=December 2008 |pages=177–192 |url=https://www.usenix.org/legacy/events/osdi08/tech/full_papers/bansal/bansal.pdf}}</ref>
=== स्थैतिक बाइनरी ट्रांसलेशन के उदाहरण ===
[[हनीवेल]] ने अपने [[हनीवेल 200]] श्रृंखला के कंप्यूटरों के लिए [[मुक्तिदाता (हनीवेल)|लिबरेटर (हनीवेल)]] नामक एक प्रोग्राम प्रदान किया, यह [[आईबीएम 1400 श्रृंखला]] के कंप्यूटरों के प्रोग्रामों को हनीवेल 200 श्रृंखला के प्रोग्रामों में ट्रांसलेशन कर सकता है।<ref>{{cite book |url=http://bitsavers.org/pdf/honeywell/series200/charlie_gibbs/012_Series_200_Summary_Description.pdf |title=Honeywell Series 200 Summary Description |date=February 1966 |publisher=[[Honeywell]] |page=11 |quote=For example, the instruction repertoire of Series 200 processors is similar enough to those of several other processing systcms, viz., the IBM 1400 series, to allow automated, one-time translation of programs written for these competitive systems to a form suitable for execution on higher-performance Series 200 systems.}}</ref>  


2014 में, 1998 के [[वीडियो गेम]] [[स्टार्क्रैफ्ट]] का एक [[एआरएम वास्तुकला]] संस्करण स्थिर पुनर्संयोजन और मूल x[[86]] संस्करण के अतिरिक्त [[रिवर्स इंजीनियरिंग|अभियांत्रीकरण]] द्वारा उत्पन्न किया गया था।<ref>{{cite web |url=http://www.golem.de/news/open-pandora-starcraft-fuer-arm-handheld-kompiliert-1403-105031.html |title=Starcraft für ARM-Handheld kompiliert |date=March 10, 2014 |author-first=Peter |author-last=Steinlechner |access-date=March 25, 2014 |language=de |publisher=golem.de}}</ref><ref>{{cite web |url=http://repo.openpandora.org/?page=detail&app=package.starcraft |title=StarCraft |author=notaz |date=March 4, 2014 |access-date=March 26, 2014 |publisher=repo.openpandora.org}}</ref> [[पेंडोरा]] हैंडहेल्ड समुदाय अपने दम पर आवश्यक उपकरण<ref>{{cite web |url=https://github.com/notaz/ia32rtools |title=ia32rtools/ |author=notaz |date=2014-03-01 |access-date=2015-01-09 |publisher=[[GitHub]]}}</ref> विकसित करने और इस तरह के अनुवादों को कई बार सफलतापूर्वक प्राप्त करने में सक्षम था।<ref>{{cite web |url=http://boards.openpandora.org/topic/15820-starcraft/ |quote=''The "no source, no port" rule is not completely true, you can get something similar (but not the same) as a port through static recompilation. Similar stuff was done several times by M-HT for some DOS games. The game was also converted for Android with somewhat similar approach.'' |title=Starcraft |author=notaz |date=March 4, 2014 |access-date=March 29, 2014 |publisher=openpandora.org}}</ref><ref>{{cite web |url=http://repo.openpandora.org/?page=detail&app=warcraft_sr |title=Warcraft: Orcs & Humans |publisher=repo.openpandora.org |author=M-HT}}</ref>


=== स्टैटिक द्विआधारी ट्रांसलेशन के उदाहरण ===
उदाहरण के लिए, 2014 में वीडियो गेम [[क्यूब विश्व]] की [[प्रक्रियात्मक पीढ़ी]] के लिए एक सफल x86-से-[[x64]] स्थिर पुनर्संकलन उत्पन्न किया गया था।<ref>{{cite web |url=http://mp2.dk/blog/blog/2014/04/14/practical-and-portable-binary-recompilation/ |title=Practical and Portable X86 Recompilation |date=2014-04-14 |author-first=Mathias |author-last=Kærlev |access-date=2014-08-08 |quote=but then the idea of somehow using the original x86 machine code presented itself. However, for our open server, we need to support x86-64 as well, and in that case, we absolutely need emulation or recompilation. […] Static recompilation to assembler seemed like a much better option, but to keep it portable, we would need to write backends for x86, x86-64, and possibly ARM/PowerPC.}}</ref>
[[हनीवेल]] ने अपने [[हनीवेल 200]] श्रृंखला के कंप्यूटरों के लिए [[मुक्तिदाता (हनीवेल)]] नामक एक कार्यक्रम प्रदान किया; यह [[आईबीएम 1400 श्रृंखला]] के कंप्यूटरों के कार्यक्रमों को हनीवेल 200 श्रृंखला के कार्यक्रमों में अनुवाद कर सकता है।<ref>{{cite book |url=http://bitsavers.org/pdf/honeywell/series200/charlie_gibbs/012_Series_200_Summary_Description.pdf |title=Honeywell Series 200 Summary Description |date=February 1966 |publisher=[[Honeywell]] |page=11 |quote=For example, the instruction repertoire of Series 200 processors is similar enough to those of several other processing systcms, viz., the IBM 1400 series, to allow automated, one-time translation of programs written for these competitive systems to a form suitable for execution on higher-performance Series 200 systems.}}</ref>
2014 में, 1998 के [[वीडियो गेम]] StarCraft (वीडियो गेम) का एक [[एआरएम वास्तुकला]] संस्करण स्थिर पुनर्संयोजन और मूल x[[86]] संस्करण के अतिरिक्त [[रिवर्स इंजीनियरिंग]] द्वारा उत्पन्न किया गया था।<ref>{{cite web |url=http://www.golem.de/news/open-pandora-starcraft-fuer-arm-handheld-kompiliert-1403-105031.html |title=Starcraft für ARM-Handheld kompiliert |date=March 10, 2014 |author-first=Peter |author-last=Steinlechner |access-date=March 25, 2014 |language=de |publisher=golem.de}}</ref><ref>{{cite web |url=http://repo.openpandora.org/?page=detail&app=package.starcraft |title=StarCraft |author=notaz |date=March 4, 2014 |access-date=March 26, 2014 |publisher=repo.openpandora.org}}</ref>
पेंडोरा (कंसोल) हैंडहेल्ड समुदाय आवश्यक उपकरण विकसित करने में सक्षम था<ref>{{cite web |url=https://github.com/notaz/ia32rtools |title=ia32rtools/ |author=notaz |date=2014-03-01 |access-date=2015-01-09 |publisher=[[GitHub]]}}</ref> अपने दम पर और इस तरह के अनुवादों को कई बार सफलतापूर्वक प्राप्त करना।<ref>{{cite web |url=http://boards.openpandora.org/topic/15820-starcraft/ |quote=''The "no source, no port" rule is not completely true, you can get something similar (but not the same) as a port through static recompilation. Similar stuff was done several times by M-HT for some DOS games. The game was also converted for Android with somewhat similar approach.'' |title=Starcraft |author=notaz |date=March 4, 2014 |access-date=March 29, 2014 |publisher=openpandora.org}}</ref><ref>{{cite web |url=http://repo.openpandora.org/?page=detail&app=warcraft_sr |title=Warcraft: Orcs & Humans |publisher=repo.openpandora.org |author=M-HT}}</ref>
उदाहरण के लिए, 2014 में वीडियो गेम [[क्यूब विश्व]] की [[प्रक्रियात्मक पीढ़ी]] के लिए एक सफल x86-to-[[x64]] स्थिर पुनर्संकलन उत्पन्न किया गया था।<ref>{{cite web |url=http://mp2.dk/blog/blog/2014/04/14/practical-and-portable-binary-recompilation/ |title=Practical and Portable X86 Recompilation |date=2014-04-14 |author-first=Mathias |author-last=Kærlev |access-date=2014-08-08 |quote=but then the idea of somehow using the original x86 machine code presented itself. However, for our open server, we need to support x86-64 as well, and in that case, we absolutely need emulation or recompilation. […] Static recompilation to assembler seemed like a much better option, but to keep it portable, we would need to write backends for x86, x86-64, and possibly ARM/PowerPC.}}</ref>
एक अन्य उदाहरण वीडियोगेम सुपर मारियो ब्रदर्स का [[निन्टेंडो एंटरटेनमेंट सिस्टम]]-टू-एक्स 86 स्टैटिकली रीकंपाइल्ड संस्करण है, जिसे 2013 में [[एलएलवीएम]] के उपयोग के तहत उत्पन्न किया गया था।<ref>{{cite web |url=http://andrewkelley.me/post/jamulator.html |author-first=Andrew |author-last=Kelley |title=Statically Recompiling NES Games into Native Executables with LLVM and Go |date=2013-07-07 |access-date=2013-08-08 |quote=This article presents original research regarding the possibility of statically disassembling and recompiling Nintendo Entertainment System games into native executables.}}</ref>
2004 में [[Nintendo]] में स्कॉट इलियट और फिलिप आर हचिंसन ने [[खेल का लड़का]] द्विआधारी से सी कोड उत्पन्न करने के लिए एक उपकरण विकसित किया जिसे तब एक नए प्लेटफॉर्म के लिए संकलित किया जा सकता था और एयरलाइन मनोरंजन प्रणालियों में उपयोग के लिए एक हार्डवेयर लाइब्रेरी से जोड़ा जा सकता था।<ref>{{cite patent |url=http://www.google.com/patents/US7765539 |inventor1-last=Elliott |inventor1-first=Scott |inventor2-last=Hutchinson |inventor2-first=Phillip |title=System and method for trans-compiling video games |issue-date=2010 |number=7765539 |country=US}}</ref>
1995 में [[बेल संचार अनुसंधान]] में नॉर्मन रैमसे और [[प्रिंसटन विश्वविद्यालय]] के कंप्यूटर साइंस विभाग में मैरी एफ. फर्नांडीज ने द न्यू जर्सी मशीन-कोड टूलकिट विकसित किया, जिसमें स्टैटिक असेंबली ट्रांसलेशन के लिए बुनियादी उपकरण थे।<ref>{{cite conference |book-title=Proceeding TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings |url=https://www.usenix.org/legacy/publications/library/proceedings/neworl/full_papers/ramsey |author-last1=Ramsey |author-first1=Norman |author-last2=Fernandez |author-first2=Mary F. |date=1995 |pages=24 |title=The New Jersey Machine-Code Toolkit |publisher=USENIX Association Berkeley, CA, USA}}</ref>


एक अन्य उदाहरण [[निन्टेंडो एंटरटेनमेंट सिस्टम|एनएसई]] -से-[[x86]] वीडियोगेम [[सुपर मारियो ब्रदर्स]] का स्थिर रूप से पुन: संकलित संस्करण है, जिसे 2013 में [[एलएलवीएम]] के उपयोग के तहत उत्पन्न किया गया था।<ref>{{cite web |url=http://andrewkelley.me/post/jamulator.html |author-first=Andrew |author-last=Kelley |title=Statically Recompiling NES Games into Native Executables with LLVM and Go |date=2013-07-07 |access-date=2013-08-08 |quote=This article presents original research regarding the possibility of statically disassembling and recompiling Nintendo Entertainment System games into native executables.}}</ref>


== गतिशील द्विआधारी अनुवाद ==
2004 में [[Nintendo|निंटेंडो]] में स्कॉट इलियट और फिलिप आर हचिंसन ने [[खेल का लड़का|गेम बॉय]] बाइनरी से सी कोड उत्पन्न करने के लिए एक उपकरण विकसित किया जिसे तब एक नए प्लेटफॉर्म के लिए संकलित किया जा सकता था और एयरलाइन मनोरंजन प्रणालियों में उपयोग के लिए एक हार्डवेयर लाइब्रेरी से जोड़ा जा सकता था।<ref>{{cite patent |url=http://www.google.com/patents/US7765539 |inventor1-last=Elliott |inventor1-first=Scott |inventor2-last=Hutchinson |inventor2-first=Phillip |title=System and method for trans-compiling video games |issue-date=2010 |number=7765539 |country=US}}</ref>
गतिशील द्विआधारी अनुवाद (DBT) कोड के एक छोटे अनुक्रम को देखता है - आमतौर पर एक मूल ब्लॉक के क्रम में - फिर इसका अनुवाद करता है और परिणामी अनुक्रम को कैश करता है। कोड का केवल अनुवाद किया जाता है क्योंकि यह खोजा जाता है और जब संभव हो, और शाखा निर्देश पहले से अनुवादित और सहेजे गए कोड ([[memoization]]) को इंगित करने के लिए बनाए जाते हैं।


गतिशील द्विआधारी अनुवाद सरल इम्यूलेशन से अलग है (एमुलेटर के मुख्य रीड-डीकोड-एक्ज़ीक्यूट लूप को खत्म करना - एक प्रमुख प्रदर्शन अड़चन), अनुवाद समय के दौरान बड़े ओवरहेड द्वारा इसके लिए भुगतान करना। इस ओवरहेड को उम्मीद से परिशोधित किया गया है क्योंकि अनुवादित कोड अनुक्रमों को कई बार निष्पादित किया जाता है।
1995 में [[बेल संचार अनुसंधान]] में नॉर्मन रैमसे और [[प्रिंसटन विश्वविद्यालय]] के कंप्यूटर साइंस विभाग में मैरी एफ. फर्नांडीज ने द न्यू जर्सी मशीन-कोड टूलकिट विकसित किया, जिसमें स्थिर असेंबली ट्रांसलेशन के लिए बुनियादी उपकरण थे।<ref>{{cite conference |book-title=Proceeding TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings |url=https://www.usenix.org/legacy/publications/library/proceedings/neworl/full_papers/ramsey |author-last1=Ramsey |author-first1=Norman |author-last2=Fernandez |author-first2=Mary F. |date=1995 |pages=24 |title=The New Jersey Machine-Code Toolkit |publisher=USENIX Association Berkeley, CA, USA}}</ref>
== गतिशील बाइनरी ट्रांसलेशन ==
गतिशील बाइनरी ट्रांसलेशन (डीबीटी) कोड के एक छोटे अनुक्रम को देखता है - आमतौर पर एक [[मूल ब्लॉक]] के क्रम में - फिर इसका ट्रांसलेशन करता है और परिणामी अनुक्रम को कैश करता है। कोड का केवल ट्रांसलेशन किया जाता है क्योंकि जब संभव हो तब यह पाया जाता है, कि शाखा निर्देश पहले से अनुवादित और सहेजे गए कोड ([[memoization|ज्ञापन]]) को इंगित करने के लिए बनाए जाते हैं।


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


=== सॉफ्टवेयर में गतिशील द्विआधारी अनुवाद के उदाहरण ===
अधिक उन्नत गतिशील अनुवादक [[गतिशील पुनर्संकलन]] का उपयोग करते हैं जहां अनुवादित कोड को यह पता लगाने के लिए यंत्रीकृत किया जाता है कि किन भागों को बड़ी संख्या में निष्पादित किया जाता है, और इन भागों को आक्रामक रूप से [[अनुकूलित]] किया जाता है। यह तकनीक एक जेआईटी संकलक की याद दिलाती है, और वास्तव में ऐसे संकलक (जैसे [[सन माइक्रोसिस्टम्स|सन माइक्रोप्रणाली्स]] की [[हॉटस्पॉट (जावा)]] तकनीक) को एक आभासी निर्देश सेट ([[बाईटकोड]]) से एक वास्तविक अनुवादक के रूप में देखा जा सकता है।
* [[एप्पल कंप्यूटर]] ने [[Apple Macintosh|मैकितोश कंप्यूटर]] की [[PowerPC|पावरपीसी]] लाइन में [[M68K]] कोड के लिए एक गतिशील अनुवाद [[एम्यूलेटर]] लागू किया,<ref name="Wharton_1994"/> जिसने विश्वसनीयता, प्रदर्शन और अनुकूलता के बहुत उच्च स्तर हासिल किए ([[मैक 68K एमुलेटर]] देखें)। इसने एप्पल को केवल आंशिक रूप से मूल [[ऑपरेटिंग सिस्टम|संचालन प्रणाली]] के साथ बाज़ार में लाने की अनुमति दी, ताकि अंतिम उपयोगकर्ता सॉफ़्टवेयर में अपने निवेश को [[जोखिम]] में डाले बिना नए, तेज़ आर्किटेक्चर को अपना सकते थे। आंशिक रूप से क्योंकि एमुलेटर इतना सफल था, इसलिय संचालन प्रणाली के कई हिस्से अनुकरणीय बने रहे। 2001 में [[Mac OS X|मैक ओएस]] [[एक्स]] (10.0) के प्रकशित होने तक पावरपीसी मूल संचालन प्रणाली (ओएस) में पूर्ण परिवर्तन नहीं किया गया था। (मैक ओएस एक्स "[[क्लासिक]]" रनटाइम एनवायरनमेंट ने [[मैक ओएस एक्स 10.5]] तक पावरपीसी मैक पर इस अनुकरण क्षमता की पेशकश जारी रखी।)
* इंटेल-आधारित मैक के लिए [[क्लासिक (मैक ओएस एक्स)|मैक ओएस एक्स]] 10.4.4 ने ऐप्पल के पीपीसी-आधारित हार्डवेयर से x86 में संक्रमण को आसान बनाने के लिए [[रोसेटा (सॉफ्टवेयर)|रोसेटा]] गतिशील अनुवाद परत पेश की। [[Transitive Corporation|सकर्मक निगम]] द्वारा एप्पल के लिए विकसित किया गया, रोसेटा सॉफ़्टवेयर सकर्मक के [[QuickTransit|त्वरित पारगमन]] समाधान का कार्यान्वयन है।
* अपने उत्पाद जीवन काल के दौरान त्वरित पारगमन ने [[SPARC|स्पार्क]]→[[x86,]] x86→[[पावरपीसी]] और [[एमआईपीएस]] → [[Itanium 2|इटेनियम 2]] अनुवाद समर्थन भी प्रदान किया।
* [[डिजिटल उपकरण निगम]] ने अपने अनुवाद उपकरणों के साथ समान सफलता हासिल की ताकि उपयोगकर्ताओं को [[जटिल निर्देश सेट कंप्यूटर]] [[VAX|वीएएक्स]] आर्किटेक्चर से डीईसी अल्फा आरईएससी आर्किटेक्चर में स्थानांतरित करने में मदद मिल सके।{{citation needed|date=July 2011}}
* [[Hewlett-Packard|हेवलेट-पैकर्ड]] एआरआईएस (स्वचालित पुनः अंतरण एंड और एकीकृत एनवायरनमेंट अनुरूपण) एक सॉफ्टवेयर है<ref>{{cite book |url=https://books.google.com/books?id=1hQ7ngEACAAJ |publisher=Prentice Hall PTR |date=2003 |title=Itanium Rising: Breaking Through Moore's Second Law of Computing Power |author-first1=Jim |author-last1=Carlson |author-first2=Jerry |author-last2=Huck |access-date=2015-01-09 |isbn=978-0-13046415-6}}</ref> गतिशील द्विआधारी अनुवाद सिस्टम जो [[एचपीई वफ़ादारी सर्वर|एचपीई इंटीग्रिटी सर्वर]] के लिए [[एचपी-यूएक्स]] 11i पर [[एचपी 9000]] एचपी-यूएक्स अनुप्रयोगों को पारदर्शी और सटीक रूप से निष्पादित करने के लिए दो चरण के गतिशील अनुवाद के साथ फास्ट कोड व्याख्या को जोड़ता है।<ref>{{cite web |url=http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801/?ciid=0208713ba4f02110713ba4f02110275d6e10RCRD |title=HP ARIES Dynamic Binary Translator |publisher=[[Hewlett-Packard|HP]] |access-date=2015-01-09 |archive-url=https://web.archive.org/web/20150110072830/http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801/?ciid=0208713ba4f02110713ba4f02110275d6e10RCRD |archive-date=2015-01-10 |url-status=dead}}</ref> एआरआईएस तेज़ दुभाषिया बिना किसी उपयोगकर्ता हस्तक्षेप के गैर-विशेषाधिकार प्राप्त [[PA-RISC|पीए-]][[आरआईएससी]] निर्देशों के एक पूर्ण सेट का अनुकरण करता है। व्याख्या के दौरान, यह एप्लिकेशन के निष्पादन पैटर्न पर नज़र रखता है और रनटाइम पर केवल अक्सर निष्पादित कोड को मूल [[इटेनियम]] कोड में अनुवादित करता है। एआरआईएस दो चरण के गतिशील अनुवाद को लागू करता है, एक ऐसी तकनीक जिसमें पहले चरण में अनुवादित कोड रनटाइम प्रोफ़ाइल जानकारी एकत्र करता है जिसका उपयोग दूसरे चरण के अनुवाद के दौरान अनुवादित कोड को और अधिक अनुकूलित करने के लिए किया जाता है। एआरआईएस गतिशील रूप से अनुवादित कोड को मेमोरी बफर में संग्रहीत करता है जिसे कोड कैश कहा जाता है। अनुवादित मूल ब्लॉकों के आगे के संदर्भ सीधे कोड कैश में निष्पादित होते हैं और अतिरिक्त व्याख्या या अनुवाद की आवश्यकता नहीं होती है। ज्यादातर समय कोड कैश में निष्पादन सुनिश्चित करने के लिए अनुवादित कोड ब्लॉक के लक्ष्यों को बैक-पैच किया जाता है। अनुकरण के अंत में, एआरआईएस मूल एप्लिकेशन को संशोधित किए बिना सभी अनुवादित कोड को हटा देता है। एआरआईएस प्रतिस्पर्धी इंजन पर्यावरण प्रतिस्पर्धी को भी लागू करता है जो [[एचपी 9000 एचपी-युएक्स]] एप्लिकेशन के प्रणाली कॉल, सिग्नल डिलीवरी, अपवाद प्रबंधन, थ्रेड प्रबंधन, डिबगिंग के लिए [[एचपी]] [[GDB|जीडीबी]] के प्रतिस्पर्धी और एप्लिकेशन के लिए कोर फ़ाइल निर्माण का अनुकरण करता है।
* डीईसी ने [[x86]] एप्लिकेशन को अल्फा एप्लिकेशन में बदलने के लिए [[ऍफ़एक्स!32]] द्विआधारी अनुवाद बनाया।<ref name="Wharton_1994"/>
*[[सन माइक्रोसिस्टम्स के]] [[वाबी (सॉफ्टवेयर)]] सॉफ्टवेयर में x86 से स्पार्क निर्देशों के लिए गतिशील अनुवाद सम्मिलित था।
* जनवरी 2000 में, [[हस्तांतरण|ट्रांसमेटा]] कॉर्पोरेशन ने [[ट्रांसम्यूटेशनल क्रूसो|क्रूसो]] नामक एक नावेल प्रोसेसर प्रारूप की घोषणा की।<ref>{{cite web |url=http://archive.arstechnica.com/cpu/1q00/crusoe/m-crusoe-1.html |title=Transmeta Crusoe Explored |author-first1=Jon |author-last1=Stokes |publisher=[[Ars Technica]] |access-date=2015-01-09}}</ref> <ref>{{cite web |url=http://www.geek.com/procspec/features/transmeta/crusoe.htm |title=Transmeta's Crusoe Microprocessor |author-first=Rob |author-last=Hughes |date=January 20, 2000 |publisher=[[geek.com]] |archive-url=https://web.archive.org/web/20070927184520/http://www.geek.com/procspec/features/transmeta/crusoe.htm |archive-date=September 27, 2007 |url-status=dead}}</ref> उनकी वेब साइट पर [[अक्सर पूछे जाने वाले प्रश्न]]<ref>{{cite web |url=http://www.transmeta.com/crusoe/faq.html |title=Transmeta Crusoe Processor Frequently Asked Questions FAQ |publisher=[[Transmeta]] |date=2007 |archive-url=https://web.archive.org/web/20070110213448/http://www.transmeta.com/crusoe/faq.html |archive-date=2007-01-10 |url-status=dead}}</ref> से , {{quote|'' एक स्मार्ट माइक्रोप्रोसेसर में इंजन के रूप में एक हार्डवेयर [[वीएलआईडब्ल्यू]] कोर और एक सॉफ्टवेयर परत होती है जिसे कोड मॉर्फिंग सॉफ्टवेयर कहा जाता है। कोड मॉर्फिंग सॉफ्टवेयर [[x86]] निर्देशों को मूल क्रूसो निर्देशों में बदलने या अनुवाद करने के लिए शेल [...] के रूप में कार्य करता है। इसके अलावा, कोड मॉर्फिंग सॉफ़्टवेयर में डायनेमिक कंपाइलर और कोड ऑप्टिमाइज़र सम्मिलित हैं [...] जिसके परिणामस्वरूप न्यूनतम शक्ति पर प्रदर्शन में वृद्धि हुई है। […] [यह] सॉफ्टवेयर अनुप्रयोगों के विशाल आधार को प्रभावित किए बिना ट्रांसमेटा को वीएलआईडब्ल्यू हार्डवेयर और कोड मॉर्फिंग सॉफ़्टवेयर को अलग-अलग विकसित करने की अनुमति देता है।''}}
* [[इंटेल]] कॉर्पोरेशन ने [[IA-32 निष्पादन परत|आईए-32 निष्पादन परत]] विकसित और कार्यान्वित किया - [[इटेनियम]]-आधारित प्रणाली पर आईए-32 अनुप्रयोगों का समर्थन करने के लिए प्रारूप किया गया एक गतिशील द्विआधारी अनुवादक है, जिसे इटेनियम आर्किटेक्चर के लिए [[माइक्रोसॉफ्ट]] [[Microsoft|विंडोज]] [[सर्वर]] में सम्मिलित किया गया था, साथ ही [[रेड हैट]] और [[एसयूएसई]] [[Linux]] के कई फ्लेवर में भी सम्मिलित किया गया था। इसने आईए-32 अनुप्रयोगों को इटेनियम प्रोसेसर पर मूल आईए-32 मोड का उपयोग करने की तुलना में तेज़ी से चलाने की अनुमति दी।
* [[डॉल्फिन (एमुलेटर)|डॉल्फिन]] ([[खेल घन|गेम क्यूब]]/[[Wii|डब्ल्यूआईआई]] के लिए एक एमुलेटर) जेआईटी x86 और एएआरसीएच64 के लिए पावरपीसी कोड को फिर से संकलित करता है।


=== हार्डवेयर में गतिशील द्विआधारी अनुवाद के उदाहरण ===
=== सॉफ्टवेयर में गतिशील बाइनरी ट्रांसलेशन के उदाहरण ===
* चूंकि [[पेंटियम प्रो]] x86 इंटेल सीपीयू [[जटिल निर्देश सेट कंप्यूटिंग|जटिल सीआईएससी]] x86 निर्देशों को अधिक आरआईएससी-जैसे आंतरिक [[माइक्रो आपरेशन|सूक्ष्म संचालनो]] में अनुवादित करता है।
* [[एप्पल कंप्यूटर]] ने [[Apple Macintosh|मैकितोश कंप्यूटर]] की [[PowerPC|पावरपीसी]] लाइन में [[M68K]] कोड के लिए एक गतिशील ट्रांसलेशन [[एम्यूलेटर|प्रतिद्वंद्वी]] लागू किया,<ref name="Wharton_1994"/> जिसने विश्वसनीयता, प्रदर्शन और अनुकूलता के बहुत उच्च स्तर हासिल किए ([[मैक 68K एमुलेटर|मैक 68K प्रतिद्वंद्वी]] देखें)। इसने एप्पल को केवल आंशिक रूप से मूल [[ऑपरेटिंग सिस्टम|संचालन प्रणाली]] के साथ बाज़ार में लाने की अनुमति दी, ताकि अंतिम उपयोगकर्ता सॉफ़्टवेयर में अपने निवेश को [[जोखिम]] में डाले बिना नए, तेज़ वास्तुकला को अपना सकते थे। आंशिक रूप से क्योंकि प्रतिद्वंद्वी इतना सफल था, इसलिय संचालन प्रणाली के कई हिस्से अनुकरणीय बने रहे। 2001 में [[Mac OS X|मैक ओएस]] [[एक्स]] (10.0) के प्रकशित होने तक पावरपीसी मूल संचालन प्रणाली (ओएस) में पूर्ण परिवर्तन नहीं किया गया था। (मैक ओएस एक्स "[[क्लासिक]]" कार्य अवधि वातावरण ने [[मैक ओएस एक्स 10.5]] तक पावरपीसी मैक पर इस अनुकरण क्षमता की पेशकश जारी रखी।)
* [[Nvidia|एनवीडिया]] [[Tegra|टेग्रा]] K1 डेनवर स्लो हार्डवेयर डिकोडर पर [[एआरएम]] निर्देशों को उनके मूल माइक्रोकोड निर्देशों में अनुवादित करता है और हॉट कोड के लिए एक सॉफ्टवेयर द्विआधारी अनुवादक का उपयोग करता है।{{citation needed|date=February 2015}}
* इंटेल-आधारित मैक के लिए [[क्लासिक (मैक ओएस एक्स)|मैक ओएस एक्स]] 10.4.4 ने ऐप्पल के पीपीसी-आधारित हार्डवेयर से x86 में संक्रमण को आसान बनाने के लिए [[रोसेटा (सॉफ्टवेयर)|रोसेटा]] गतिशील ट्रांसलेशन परत पेश की। [[Transitive Corporation|सकर्मक निगम]] द्वारा एप्पल के लिए विकसित किया गया, रोसेटा सॉफ़्टवेयर सकर्मक के [[QuickTransit|त्वरित पारगमन]] समाधान का कार्यान्वयन है।
* अपने उत्पाद जीवन काल के दौरान त्वरित पारगमन ने [[SPARC|स्पार्क]]→[[x86,]] x86→[[पावरपीसी]] और [[एमआईपीएस]] → [[Itanium 2|इटेनियम 2]] ट्रांसलेशन समर्थन भी प्रदान किया।
* [[डिजिटल उपकरण निगम]] ने अपने ट्रांसलेशन उपकरणों के साथ समान सफलता हासिल की ताकि उपयोगकर्ताओं को [[जटिल निर्देश सेट कंप्यूटर]] [[VAX|वीएएक्स]] वास्तुकला से डीईसी अल्फा आरईएससी वास्तुकला में स्थानांतरित करने में मदद मिल सके।{{citation needed|date=July 2011}}
* [[Hewlett-Packard|हेवलेट-पैकर्ड]] एआरआईएस (स्वचालित पुनः अंतरण एंड और एकीकृत वातावरण अनुरूपण) एक सॉफ्टवेयर है<ref>{{cite book |url=https://books.google.com/books?id=1hQ7ngEACAAJ |publisher=Prentice Hall PTR |date=2003 |title=Itanium Rising: Breaking Through Moore's Second Law of Computing Power |author-first1=Jim |author-last1=Carlson |author-first2=Jerry |author-last2=Huck |access-date=2015-01-09 |isbn=978-0-13046415-6}}</ref> गतिशील बाइनरी ट्रांसलेशन प्रणाली जो [[एचपीई वफ़ादारी सर्वर|एचपीई इंटीग्रिटी सर्वर]] के लिए [[एचपी-यूएक्स]] 11i पर [[एचपी 9000]] एचपी-यूएक्स अनुप्रयोगों को पारदर्शी और सटीक रूप से निष्पादित करने के लिए दो चरण के गतिशील ट्रांसलेशन के साथ फास्ट कोड व्याख्या को जोड़ता है।<ref>{{cite web |url=http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801/?ciid=0208713ba4f02110713ba4f02110275d6e10RCRD |title=HP ARIES Dynamic Binary Translator |publisher=[[Hewlett-Packard|HP]] |access-date=2015-01-09 |archive-url=https://web.archive.org/web/20150110072830/http://h21007.www2.hp.com/portal/site/dspp/menuitem.863c3e4cbcdc3f3515b49c108973a801/?ciid=0208713ba4f02110713ba4f02110275d6e10RCRD |archive-date=2015-01-10 |url-status=dead}}</ref> एआरआईएस तेज़ दुभाषिया बिना किसी उपयोगकर्ता हस्तक्षेप के गैर-विशेषाधिकार प्राप्त [[PA-RISC|पीए-]][[आरआईएससी]] निर्देशों के एक पूर्ण सेट का अनुकरण करता है। व्याख्या के दौरान, यह अनुप्रयोग के निष्पादन पतिरूप पर नज़र रखता है और कार्य अवधि पर केवल अक्सर निष्पादित कोड को मूल [[इटेनियम]] कोड में अनुवादित करता है। एआरआईएस दो चरण के गतिशील ट्रांसलेशन को लागू करता है, एक ऐसी तकनीक जिसमें पहले चरण में अनुवादित कोड कार्य अवधि वर्णन जानकारी एकत्र करता है जिसका उपयोग दूसरे चरण के ट्रांसलेशन के दौरान अनुवादित कोड को और अधिक अनुकूलित करने के लिए किया जाता है। एआरआईएस गतिशील रूप से अनुवादित कोड को मेमोरी बफर में संग्रहीत करता है जिसे कोड कैश कहा जाता है। अनुवादित मूल ब्लॉकों के आगे के संदर्भ सीधे कोड कैश में निष्पादित होते हैं और अतिरिक्त व्याख्या या ट्रांसलेशन की आवश्यकता नहीं होती है। ज्यादातर समय कोड कैश में निष्पादन सुनिश्चित करने के लिए अनुवादित कोड ब्लॉक के लक्ष्यों को बैक-पैच किया जाता है। अनुकरण के अंत में, एआरआईएस मूल अनुप्रयोग को संशोधित किए बिना सभी अनुवादित कोड को हटा देता है। एआरआईएस प्रतिस्पर्धी इंजन वातावरण प्रतिस्पर्धी को भी लागू करता है जो [[एचपी 9000 एचपी-युएक्स]] अनुप्रयोग के प्रणाली कॉल, सिग्नल डिलीवरी, अपवाद प्रबंधन, थ्रेड प्रबंधन, दोषमार्जन के लिए [[एचपी]] [[GDB|जीडीबी]] के प्रतिस्पर्धी और अनुप्रयोग के लिए कोर फ़ाइल निर्माण का अनुकरण करता है।
* डीईसी ने [[x86]] अनुप्रयोग को अल्फा अनुप्रयोग में बदलने के लिए [[ऍफ़एक्स!32]] बाइनरी ट्रांसलेशन बनाया।<ref name="Wharton_1994"/>
*[[सन माइक्रोसिस्टम्स के|सन माइक्रोप्रणाली्स के]] [[वाबी (सॉफ्टवेयर)]] सॉफ्टवेयर में x86 से स्पार्क निर्देशों के लिए गतिशील ट्रांसलेशन सम्मिलित था।
* जनवरी 2000 में, [[हस्तांतरण|ट्रांसमेटा]] संस्था ने [[ट्रांसम्यूटेशनल क्रूसो|क्रूसो]] नामक एक नावेल प्रोसेसर प्रारूप की घोषणा की।<ref>{{cite web |url=http://archive.arstechnica.com/cpu/1q00/crusoe/m-crusoe-1.html |title=Transmeta Crusoe Explored |author-first1=Jon |author-last1=Stokes |publisher=[[Ars Technica]] |access-date=2015-01-09}}</ref> <ref>{{cite web |url=http://www.geek.com/procspec/features/transmeta/crusoe.htm |title=Transmeta's Crusoe Microprocessor |author-first=Rob |author-last=Hughes |date=January 20, 2000 |publisher=[[geek.com]] |archive-url=https://web.archive.org/web/20070927184520/http://www.geek.com/procspec/features/transmeta/crusoe.htm |archive-date=September 27, 2007 |url-status=dead}}</ref> उनकी वेब साइट पर [[अक्सर पूछे जाने वाले प्रश्न]]<ref>{{cite web |url=http://www.transmeta.com/crusoe/faq.html |title=Transmeta Crusoe Processor Frequently Asked Questions FAQ |publisher=[[Transmeta]] |date=2007 |archive-url=https://web.archive.org/web/20070110213448/http://www.transmeta.com/crusoe/faq.html |archive-date=2007-01-10 |url-status=dead}}</ref> से , {{quote|'' एक स्मार्ट छोटे संगणक में इंजन के रूप में एक हार्डवेयर [[वीएलआईडब्ल्यू]] कोर और एक सॉफ्टवेयर परत होती है जिसे कोड रूपण सॉफ्टवेयर कहा जाता है। कोड रूपण सॉफ्टवेयर [[x86]] निर्देशों को मूल क्रूसो निर्देशों में बदलने या अनुवाद करने के लिए शेल [...] के रूप में कार्य करता है। इसके अलावा, कोड रूपण सॉफ़्टवेयर में गतिशील संकलक और कोड अनुकूलक सम्मिलित हैं [...] जिसके परिणामस्वरूप न्यूनतम शक्ति पर प्रदर्शन में वृद्धि हुई है। […] [यह] सॉफ्टवेयर अनुप्रयोगों के विशाल आधार को प्रभावित किए बिना ट्रांसमेटा को वीएलआईडब्ल्यू हार्डवेयर और कोड रूपण सॉफ़्टवेयर को अलग-अलग विकसित करने की अनुमति देता है।''}}
* [[इंटेल]] संस्था ने [[IA-32 निष्पादन परत|आईए-32 निष्पादन परत]] विकसित और कार्यान्वित किया - [[इटेनियम]]-आधारित प्रणाली पर आईए-32 अनुप्रयोगों का समर्थन करने के लिए प्रारूप किया गया एक गतिशील बाइनरी अनुवादक है, जिसे इटेनियम वास्तुकला के लिए [[माइक्रोसॉफ्ट]] [[Microsoft|विंडोज]] [[सर्वर]] में सम्मिलित किया गया था, साथ ही [[रेड हैट]] और [[एसयूएसई]] [[Linux]] के कई फ्लेवर में भी सम्मिलित किया गया था। इसने आईए-32 अनुप्रयोगों को इटेनियम संसाधक पर मूल आईए-32 मोड का उपयोग करने की तुलना में तेज़ी से चलाने की अनुमति दी।
* [[डॉल्फिन (एमुलेटर)|डॉल्फिन]] ([[खेल घन|गेम क्यूब]]/[[Wii|डब्ल्यूआईआई]] के लिए एक प्रतिद्वंद्वी) जेआईटी x86 और एएआरसीएच64 के लिए पावरपीसी कोड को फिर से संकलित करता है।
 
=== हार्डवेयर में गतिशील बाइनरी ट्रांसलेशन के उदाहरण ===
* [[पेंटियम प्रो]] x86 इंटेल सीपीयू [[जटिल निर्देश सेट कंप्यूटिंग|जटिल सीआईएससी]] x86 निर्देशों को अधिक आरआईएससी-जैसे आंतरिक [[माइक्रो आपरेशन|सूक्ष्म संचालनो]] में अनुवादित करता है।
* [[Nvidia|एनवीडिया]] [[Tegra|टेग्रा]] K1 डेनवर निष्क्रिय हार्डवेयर कूटानुवादक पर [[एआरएम]] निर्देशों को उनके मूल माइक्रोकोड निर्देशों में अनुवादित करता है और हॉट कोड के लिए एक सॉफ्टवेयर बाइनरी अनुवादक का उपयोग करता है।{{citation needed|date=February 2015}}
== यह भी देखें ==
== यह भी देखें ==
* [[बाइनरी ऑप्टिमाइज़ेशन|द्विआधारी अनुकूलन]]
* [[बाइनरी ऑप्टिमाइज़ेशन|बाइनरी अनुकूलन]]
* [[द्विआधारी पुनःसंयोजन]]
* [[द्विआधारी पुनःसंयोजन|बाइनरी पुनःसंयोजन]]
* [[गतिशील पुनःसंयोजन]]
* [[गतिशील पुनःसंयोजन]]
* [[समय पर संकलन]]
* [[समय पर संकलन]]
* [[निर्देश सेट अनुरूपक]]
* [[निर्देश सेट अनुरूपक]]
* [[प्रतिद्वंद्वी]]
* [[प्रतिद्वंद्वी]]
* [[आभासी मशीन|वर्चुअल मशीन]]
* [[आभासी मशीन]]
* [[प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना]]
* [[प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना]]
* [[छाया स्मृति|शैडो मेमोरी]]  
* [[छाया स्मृति|शैडो मेमोरी]]  
Line 74: Line 73:
* {{Cite web |url=https://core.ac.uk/download/pdf/4417669.pdf |title=Dynamic Binary Translation from x86-32 code to x86-64 code for Virtualization |author-first=Yu-hsin |author-last=Chen |date=2009-06-20 |orig-year=2009-06-18 |publisher=[[Massachusetts Institute of Technology]] }}
* {{Cite web |url=https://core.ac.uk/download/pdf/4417669.pdf |title=Dynamic Binary Translation from x86-32 code to x86-64 code for Virtualization |author-first=Yu-hsin |author-last=Chen |date=2009-06-20 |orig-year=2009-06-18 |publisher=[[Massachusetts Institute of Technology]] }}
{{Refend}}
{{Refend}}
[[Category: अनुकरण सॉफ्टवेयर]] [[Category: दुभाषिए (कम्प्यूटिंग)]] [[Category: वर्चुअलाइजेशन]]


[[Category: Machine Translated Page]]
[[Category:All articles with unsourced statements]]
[[Category:Articles with invalid date parameter in template]]
[[Category:Articles with unsourced statements from February 2015]]
[[Category:Articles with unsourced statements from July 2011]]
[[Category:CS1 Deutsch-language sources (de)]]
[[Category:Created On 17/02/2023]]
[[Category:Created On 17/02/2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Pages with script errors]]
[[Category:Short description with empty Wikidata description]]
[[Category:Template documentation pages|Short description/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]

Latest revision as of 15:33, 16 October 2023

कम्प्यूटिंग में, बाइनरी ट्रांसलेशन बाइनरी पुनःसंयोजन (बाइनरी पुनर्संकलन) का एक रूप है, जहां निर्देशों के अनुक्रम को 'स्रोत' निर्देश सेट से 'लक्ष्य' निर्देश सेट में अनुवादित किया जाता है। निर्देश सेट अनुरूपण जैसे कुछ मामलों में, लक्ष्य निर्देश सेट स्रोत निर्देश सेट के समान हो सकता है, जो निर्देश अनुरेखण , प्रतिबंधी विच्छेद बिंदु और हॉट स्पॉट का पता लगाने जैसी परीक्षण और दोषमार्जन सुविधाएँ प्रदान करता है।

दो मुख्य प्रकार के स्थिर और गतिशील बाइनरी ट्रांसलेशन हैं। ट्रांसलेशन हार्डवेयर (उदाहरण के लिए, सीपीयू में परिपथ द्वारा) या सॉफ्टवेयर में (जैसे कार्यावधि इंजन, स्थैतिक पुन: संयोजित, प्रतिद्वंद्वी) किया जा सकता है।

अभिप्रेरण

बाइनरी ट्रांसलेशन लक्ष्य प्लेटफॉर्म के लिए बाइनरी की कमी, लक्ष्य प्लेटफॉर्म के लिए संकलित करने के लिए स्रोत कोड की कमी, या लक्ष्य प्लेटफॉर्म के लिए स्रोत को संकलित करने में अन्यथा कठिनाई से प्रेरित है।

जैसा कि प्रतिस्पर्धी ओवरहेड हटा दिया जाता है, सांख्यिकीय रूप से संकलित बायनेरिज़ अपने संबंधित बायनेरिज़ की तुलना में संभावित रूप से तेज़ी से चलती हैं। यह सामान्य रूप से व्याख्या किए गए और संकलित प्रोग्राम के बीच प्रदर्शन के अंतर के समान है।

स्थिर बाइनरी अवुवाद

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

इस तरह का एक स्थिर बाइनरी ट्रांसलेशन सार्वभौमिक सुपरऑप्टिमाइज़र अवलोकन तकनीक (स्टैनफोर्ड विश्वविद्यालय से सौरव बंसल और एलेक्स ऐकेन द्वारा विकसित) का उपयोग संभावित रूप से कई स्रोत और लक्ष्य जोड़े के बीच कुशल ट्रांसलेशन करने के लिए करता है, जिसमें काफी कम विकास लागत और लक्ष्य बाइनरी का उच्च प्रदर्शन होता है। पावरपीसी-से-x86 ट्रांसलेशन के प्रयोगों में, कुछ बायनेरिज़ ने मूल संस्करणों से भी बेहतर प्रदर्शन किया, लेकिन औसतन वे दो-तिहाई मूल गति से ही चले सके।[1]

स्थैतिक बाइनरी ट्रांसलेशन के उदाहरण

हनीवेल ने अपने हनीवेल 200 श्रृंखला के कंप्यूटरों के लिए लिबरेटर (हनीवेल) नामक एक प्रोग्राम प्रदान किया, यह आईबीएम 1400 श्रृंखला के कंप्यूटरों के प्रोग्रामों को हनीवेल 200 श्रृंखला के प्रोग्रामों में ट्रांसलेशन कर सकता है।[2]

2014 में, 1998 के वीडियो गेम स्टार्क्रैफ्ट का एक एआरएम वास्तुकला संस्करण स्थिर पुनर्संयोजन और मूल x86 संस्करण के अतिरिक्त अभियांत्रीकरण द्वारा उत्पन्न किया गया था।[3][4] पेंडोरा हैंडहेल्ड समुदाय अपने दम पर आवश्यक उपकरण[5] विकसित करने और इस तरह के अनुवादों को कई बार सफलतापूर्वक प्राप्त करने में सक्षम था।[6][7]

उदाहरण के लिए, 2014 में वीडियो गेम क्यूब विश्व की प्रक्रियात्मक पीढ़ी के लिए एक सफल x86-से-x64 स्थिर पुनर्संकलन उत्पन्न किया गया था।[8]

एक अन्य उदाहरण एनएसई -से-x86 वीडियोगेम सुपर मारियो ब्रदर्स का स्थिर रूप से पुन: संकलित संस्करण है, जिसे 2013 में एलएलवीएम के उपयोग के तहत उत्पन्न किया गया था।[9]

2004 में निंटेंडो में स्कॉट इलियट और फिलिप आर हचिंसन ने गेम बॉय बाइनरी से सी कोड उत्पन्न करने के लिए एक उपकरण विकसित किया जिसे तब एक नए प्लेटफॉर्म के लिए संकलित किया जा सकता था और एयरलाइन मनोरंजन प्रणालियों में उपयोग के लिए एक हार्डवेयर लाइब्रेरी से जोड़ा जा सकता था।[10]

1995 में बेल संचार अनुसंधान में नॉर्मन रैमसे और प्रिंसटन विश्वविद्यालय के कंप्यूटर साइंस विभाग में मैरी एफ. फर्नांडीज ने द न्यू जर्सी मशीन-कोड टूलकिट विकसित किया, जिसमें स्थिर असेंबली ट्रांसलेशन के लिए बुनियादी उपकरण थे।[11]

गतिशील बाइनरी ट्रांसलेशन

गतिशील बाइनरी ट्रांसलेशन (डीबीटी) कोड के एक छोटे अनुक्रम को देखता है - आमतौर पर एक मूल ब्लॉक के क्रम में - फिर इसका ट्रांसलेशन करता है और परिणामी अनुक्रम को कैश करता है। कोड का केवल ट्रांसलेशन किया जाता है क्योंकि जब संभव हो तब यह पाया जाता है, कि शाखा निर्देश पहले से अनुवादित और सहेजे गए कोड (ज्ञापन) को इंगित करने के लिए बनाए जाते हैं।

गतिशील बाइनरी ट्रांसलेशन सरल प्रतिस्पर्धी से अलग है (प्रतिद्वंद्वी के मुख्य पठन-पाठन-निष्पादन लूप को खत्म करना - एक प्रमुख प्रदर्शन अड़चन), ट्रांसलेशन समय के दौरान बड़े ओवरहेड द्वारा इसके लिए भुगतान करना। इस ओवरहेड को उम्मीद से परिशोधित किया गया है क्योंकि अनुवादित कोड अनुक्रमों को कई बार निष्पादित किया जाता है।

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

सॉफ्टवेयर में गतिशील बाइनरी ट्रांसलेशन के उदाहरण

  • एप्पल कंप्यूटर ने मैकितोश कंप्यूटर की पावरपीसी लाइन में M68K कोड के लिए एक गतिशील ट्रांसलेशन प्रतिद्वंद्वी लागू किया,[12] जिसने विश्वसनीयता, प्रदर्शन और अनुकूलता के बहुत उच्च स्तर हासिल किए (मैक 68K प्रतिद्वंद्वी देखें)। इसने एप्पल को केवल आंशिक रूप से मूल संचालन प्रणाली के साथ बाज़ार में लाने की अनुमति दी, ताकि अंतिम उपयोगकर्ता सॉफ़्टवेयर में अपने निवेश को जोखिम में डाले बिना नए, तेज़ वास्तुकला को अपना सकते थे। आंशिक रूप से क्योंकि प्रतिद्वंद्वी इतना सफल था, इसलिय संचालन प्रणाली के कई हिस्से अनुकरणीय बने रहे। 2001 में मैक ओएस एक्स (10.0) के प्रकशित होने तक पावरपीसी मूल संचालन प्रणाली (ओएस) में पूर्ण परिवर्तन नहीं किया गया था। (मैक ओएस एक्स "क्लासिक" कार्य अवधि वातावरण ने मैक ओएस एक्स 10.5 तक पावरपीसी मैक पर इस अनुकरण क्षमता की पेशकश जारी रखी।)
  • इंटेल-आधारित मैक के लिए मैक ओएस एक्स 10.4.4 ने ऐप्पल के पीपीसी-आधारित हार्डवेयर से x86 में संक्रमण को आसान बनाने के लिए रोसेटा गतिशील ट्रांसलेशन परत पेश की। सकर्मक निगम द्वारा एप्पल के लिए विकसित किया गया, रोसेटा सॉफ़्टवेयर सकर्मक के त्वरित पारगमन समाधान का कार्यान्वयन है।
  • अपने उत्पाद जीवन काल के दौरान त्वरित पारगमन ने स्पार्कx86, x86→पावरपीसी और एमआईपीएसइटेनियम 2 ट्रांसलेशन समर्थन भी प्रदान किया।
  • डिजिटल उपकरण निगम ने अपने ट्रांसलेशन उपकरणों के साथ समान सफलता हासिल की ताकि उपयोगकर्ताओं को जटिल निर्देश सेट कंप्यूटर वीएएक्स वास्तुकला से डीईसी अल्फा आरईएससी वास्तुकला में स्थानांतरित करने में मदद मिल सके।[citation needed]
  • हेवलेट-पैकर्ड एआरआईएस (स्वचालित पुनः अंतरण एंड और एकीकृत वातावरण अनुरूपण) एक सॉफ्टवेयर है[13] गतिशील बाइनरी ट्रांसलेशन प्रणाली जो एचपीई इंटीग्रिटी सर्वर के लिए एचपी-यूएक्स 11i पर एचपी 9000 एचपी-यूएक्स अनुप्रयोगों को पारदर्शी और सटीक रूप से निष्पादित करने के लिए दो चरण के गतिशील ट्रांसलेशन के साथ फास्ट कोड व्याख्या को जोड़ता है।[14] एआरआईएस तेज़ दुभाषिया बिना किसी उपयोगकर्ता हस्तक्षेप के गैर-विशेषाधिकार प्राप्त पीए-आरआईएससी निर्देशों के एक पूर्ण सेट का अनुकरण करता है। व्याख्या के दौरान, यह अनुप्रयोग के निष्पादन पतिरूप पर नज़र रखता है और कार्य अवधि पर केवल अक्सर निष्पादित कोड को मूल इटेनियम कोड में अनुवादित करता है। एआरआईएस दो चरण के गतिशील ट्रांसलेशन को लागू करता है, एक ऐसी तकनीक जिसमें पहले चरण में अनुवादित कोड कार्य अवधि वर्णन जानकारी एकत्र करता है जिसका उपयोग दूसरे चरण के ट्रांसलेशन के दौरान अनुवादित कोड को और अधिक अनुकूलित करने के लिए किया जाता है। एआरआईएस गतिशील रूप से अनुवादित कोड को मेमोरी बफर में संग्रहीत करता है जिसे कोड कैश कहा जाता है। अनुवादित मूल ब्लॉकों के आगे के संदर्भ सीधे कोड कैश में निष्पादित होते हैं और अतिरिक्त व्याख्या या ट्रांसलेशन की आवश्यकता नहीं होती है। ज्यादातर समय कोड कैश में निष्पादन सुनिश्चित करने के लिए अनुवादित कोड ब्लॉक के लक्ष्यों को बैक-पैच किया जाता है। अनुकरण के अंत में, एआरआईएस मूल अनुप्रयोग को संशोधित किए बिना सभी अनुवादित कोड को हटा देता है। एआरआईएस प्रतिस्पर्धी इंजन वातावरण प्रतिस्पर्धी को भी लागू करता है जो एचपी 9000 एचपी-युएक्स अनुप्रयोग के प्रणाली कॉल, सिग्नल डिलीवरी, अपवाद प्रबंधन, थ्रेड प्रबंधन, दोषमार्जन के लिए एचपी जीडीबी के प्रतिस्पर्धी और अनुप्रयोग के लिए कोर फ़ाइल निर्माण का अनुकरण करता है।
  • डीईसी ने x86 अनुप्रयोग को अल्फा अनुप्रयोग में बदलने के लिए ऍफ़एक्स!32 बाइनरी ट्रांसलेशन बनाया।[12]
  • सन माइक्रोप्रणाली्स के वाबी (सॉफ्टवेयर) सॉफ्टवेयर में x86 से स्पार्क निर्देशों के लिए गतिशील ट्रांसलेशन सम्मिलित था।
  • जनवरी 2000 में, ट्रांसमेटा संस्था ने क्रूसो नामक एक नावेल प्रोसेसर प्रारूप की घोषणा की।[15] [16] उनकी वेब साइट पर अक्सर पूछे जाने वाले प्रश्न[17] से ,

    एक स्मार्ट छोटे संगणक में इंजन के रूप में एक हार्डवेयर वीएलआईडब्ल्यू कोर और एक सॉफ्टवेयर परत होती है जिसे कोड रूपण सॉफ्टवेयर कहा जाता है। कोड रूपण सॉफ्टवेयर x86 निर्देशों को मूल क्रूसो निर्देशों में बदलने या अनुवाद करने के लिए शेल [...] के रूप में कार्य करता है। इसके अलावा, कोड रूपण सॉफ़्टवेयर में गतिशील संकलक और कोड अनुकूलक सम्मिलित हैं [...] जिसके परिणामस्वरूप न्यूनतम शक्ति पर प्रदर्शन में वृद्धि हुई है। […] [यह] सॉफ्टवेयर अनुप्रयोगों के विशाल आधार को प्रभावित किए बिना ट्रांसमेटा को वीएलआईडब्ल्यू हार्डवेयर और कोड रूपण सॉफ़्टवेयर को अलग-अलग विकसित करने की अनुमति देता है।

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

हार्डवेयर में गतिशील बाइनरी ट्रांसलेशन के उदाहरण

यह भी देखें

संदर्भ

  1. Bansal, Sorav; Aiken, Alex (December 2008). "Binary Translation Using Peephole Superoptimizers" (PDF). Proceedings of the 8th USENIX conference on Operating systems design and implementation. pp. 177–192.
  2. Honeywell Series 200 Summary Description (PDF). Honeywell. February 1966. p. 11. For example, the instruction repertoire of Series 200 processors is similar enough to those of several other processing systcms, viz., the IBM 1400 series, to allow automated, one-time translation of programs written for these competitive systems to a form suitable for execution on higher-performance Series 200 systems.
  3. Steinlechner, Peter (March 10, 2014). "Starcraft für ARM-Handheld kompiliert" (in Deutsch). golem.de. Retrieved March 25, 2014.
  4. notaz (March 4, 2014). "StarCraft". repo.openpandora.org. Retrieved March 26, 2014.
  5. notaz (2014-03-01). "ia32rtools/". GitHub. Retrieved 2015-01-09.
  6. notaz (March 4, 2014). "Starcraft". openpandora.org. Retrieved March 29, 2014. The "no source, no port" rule is not completely true, you can get something similar (but not the same) as a port through static recompilation. Similar stuff was done several times by M-HT for some DOS games. The game was also converted for Android with somewhat similar approach.
  7. M-HT. "Warcraft: Orcs & Humans". repo.openpandora.org.
  8. Kærlev, Mathias (2014-04-14). "Practical and Portable X86 Recompilation". Retrieved 2014-08-08. but then the idea of somehow using the original x86 machine code presented itself. However, for our open server, we need to support x86-64 as well, and in that case, we absolutely need emulation or recompilation. […] Static recompilation to assembler seemed like a much better option, but to keep it portable, we would need to write backends for x86, x86-64, and possibly ARM/PowerPC.
  9. Kelley, Andrew (2013-07-07). "Statically Recompiling NES Games into Native Executables with LLVM and Go". Retrieved 2013-08-08. This article presents original research regarding the possibility of statically disassembling and recompiling Nintendo Entertainment System games into native executables.
  10. US 7765539, Elliott, Scott & Hutchinson, Phillip, "System and method for trans-compiling video games", issued 2010 
  11. Ramsey, Norman; Fernandez, Mary F. (1995). "The New Jersey Machine-Code Toolkit". Proceeding TCON'95 Proceedings of the USENIX 1995 Technical Conference Proceedings. USENIX Association Berkeley, CA, USA. p. 24.
  12. 12.0 12.1 Wharton, John Harrison (1994-08-01). "Gary Kildall, industry pioneer, dead at 52: created first microcomputer languages, disk operating systems". Microprocessor Report. MicroDesign Resources Inc. (MDR). 8 (10). Archived from the original on 2016-11-18. Retrieved 2016-11-18. […] Ironically, many of the techniques Gary pioneered are being rediscovered now, ten years later. Apple and DEC are touting binary recompilation as a "new" technology for porting existing software to the PowerPC or Alpha architecture. Actually, DRI introduced an 8080-to-8086 binary recompiler in the early 1980s. […]
  13. Carlson, Jim; Huck, Jerry (2003). Itanium Rising: Breaking Through Moore's Second Law of Computing Power. Prentice Hall PTR. ISBN 978-0-13046415-6. Retrieved 2015-01-09.
  14. "HP ARIES Dynamic Binary Translator". HP. Archived from the original on 2015-01-10. Retrieved 2015-01-09.
  15. Stokes, Jon. "Transmeta Crusoe Explored". Ars Technica. Retrieved 2015-01-09.
  16. Hughes, Rob (January 20, 2000). "Transmeta's Crusoe Microprocessor". geek.com. Archived from the original on September 27, 2007.
  17. "Transmeta Crusoe Processor Frequently Asked Questions FAQ". Transmeta. 2007. Archived from the original on 2007-01-10.


अग्रिम पठन