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

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


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


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


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


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


ऐसा ही एक स्टैटिक बाइनरी ट्रांसलेटर यूनिवर्सल [[superoptimization]] [[पीपहोल अनुकूलन]] टेक्नोलॉजी ([[स्टैनफोर्ड विश्वविद्यालय]] से [[सौरव बंसल]] और एलेक्स ऐकेन द्वारा विकसित) का उपयोग करता है, संभवतः कई स्रोत और लक्ष्य जोड़े के बीच कुशल अनुवाद करने के लिए, काफी कम विकास लागत और लक्ष्य बाइनरी के उच्च प्रदर्शन के साथ। PowerPC-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]] [[पीपहोल अनुकूलन]] टेक्नोलॉजी ([[स्टैनफोर्ड विश्वविद्यालय]] से [[सौरव बंसल]] और एलेक्स ऐकेन द्वारा विकसित) का उपयोग करता है, संभवतः कई स्रोत और लक्ष्य जोड़े के बीच कुशल अनुवाद करने के लिए, काफी कम विकास लागत और लक्ष्य द्विआधारी के उच्च प्रदर्शन के साथ। PowerPC-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>




=== स्टैटिक बाइनरी ट्रांसलेशन के उदाहरण ===
=== स्टैटिक द्विआधारी ट्रांसलेशन के उदाहरण ===
[[हनीवेल]] ने अपने [[हनीवेल 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>
[[हनीवेल]] ने अपने [[हनीवेल 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>
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>
Line 21: Line 21:
उदाहरण के लिए, 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>
उदाहरण के लिए, 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>
एक अन्य उदाहरण वीडियोगेम सुपर मारियो ब्रदर्स का [[निन्टेंडो एंटरटेनमेंट सिस्टम]]-टू-एक्स 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>
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>
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>




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


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


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


=== सॉफ्टवेयर में डायनेमिक बाइनरी ट्रांसलेशन के उदाहरण ===
=== सॉफ्टवेयर में डायनेमिक द्विआधारी ट्रांसलेशन के उदाहरण ===
* Apple कंप्यूटर ने Motorola 68000 श्रृंखला कोड के लिए उनके [[Apple Macintosh]] की [[PowerPC]] लाइन में एक डायनेमिक ट्रांसलेटिंग [[एम्यूलेटर]] लागू किया,<ref name="Wharton_1994"/>जिसने बहुत उच्च स्तर की विश्वसनीयता, प्रदर्शन और अनुकूलता हासिल की ([[मैक 68K एमुलेटर]] देखें)। इसने Apple को मशीनों को केवल आंशिक रूप से देशी [[ऑपरेटिंग सिस्टम]] के साथ बाज़ार में लाने की अनुमति दी, और अंतिम उपयोगकर्ता सॉफ़्टवेयर में अपने निवेश को [[जोखिम]] में डाले बिना नए, तेज़ आर्किटेक्चर को अपना सकते थे। आंशिक रूप से क्योंकि एमुलेटर इतना सफल था, ऑपरेटिंग सिस्टम के कई हिस्से अनुकरणीय बने रहे। 2001 में [[Mac OS X]] (10.0) के रिलीज़ होने तक PowerPC नेटिव ऑपरेटिंग सिस्टम (OS) में पूर्ण परिवर्तन नहीं किया गया था। मैक ओएस एक्स 10.5 तक।)
* Apple कंप्यूटर ने Motorola 68000 श्रृंखला कोड के लिए उनके [[Apple Macintosh]] की [[PowerPC]] लाइन में एक डायनेमिक ट्रांसलेटिंग [[एम्यूलेटर]] लागू किया,<ref name="Wharton_1994"/>जिसने बहुत उच्च स्तर की विश्वसनीयता, प्रदर्शन और अनुकूलता हासिल की ([[मैक 68K एमुलेटर]] देखें)। इसने Apple को मशीनों को केवल आंशिक रूप से देशी [[ऑपरेटिंग सिस्टम]] के साथ बाज़ार में लाने की अनुमति दी, और अंतिम उपयोगकर्ता सॉफ़्टवेयर में अपने निवेश को [[जोखिम]] में डाले बिना नए, तेज़ आर्किटेक्चर को अपना सकते थे। आंशिक रूप से क्योंकि एमुलेटर इतना सफल था, ऑपरेटिंग सिस्टम के कई हिस्से अनुकरणीय बने रहे। 2001 में [[Mac OS X]] (10.0) के रिलीज़ होने तक PowerPC नेटिव ऑपरेटिंग सिस्टम (OS) में पूर्ण परिवर्तन नहीं किया गया था। मैक ओएस एक्स 10.5 तक।)
* मैक ओएस एक्स 10.4 | इंटेल-आधारित मैक के [[क्लासिक (मैक ओएस एक्स)]] 10.4.4 ने पीपीसी-आधारित हार्डवेयर से x86 तक ऐप्पल के संक्रमण को आसान बनाने के लिए [[रोसेटा (सॉफ्टवेयर)]] गतिशील अनुवाद परत पेश की। [[Transitive Corporation]] द्वारा Apple के लिए विकसित किया गया, Rosetta सॉफ़्टवेयर Transitive के [[QuickTransit]] समाधान का कार्यान्वयन है।
* मैक ओएस एक्स 10.4 | इंटेल-आधारित मैक के [[क्लासिक (मैक ओएस एक्स)]] 10.4.4 ने पीपीसी-आधारित हार्डवेयर से x86 तक ऐप्पल के संक्रमण को आसान बनाने के लिए [[रोसेटा (सॉफ्टवेयर)]] गतिशील अनुवाद परत पेश की। [[Transitive Corporation]] द्वारा Apple के लिए विकसित किया गया, Rosetta सॉफ़्टवेयर Transitive के [[QuickTransit]] समाधान का कार्यान्वयन है।
* QuickTransit ने अपने उत्पाद जीवन काल के दौरान [[SPARC]]→x86, x86→PowerPC और MIPS आर्किटेक्चर → [[Itanium 2]] अनुवाद समर्थन भी प्रदान किया।
* QuickTransit ने अपने उत्पाद जीवन काल के दौरान [[SPARC]]→x86, x86→PowerPC और MIPS आर्किटेक्चर → [[Itanium 2]] अनुवाद समर्थन भी प्रदान किया।
* [[डिजिटल उपकरण निगम]] ने अपने अनुवाद उपकरणों के साथ समान सफलता हासिल की ताकि उपयोगकर्ताओं को [[जटिल निर्देश सेट कंप्यूटर]] [[VAX]] आर्किटेक्चर से DEC अल्फा RISC आर्किटेक्चर में माइग्रेट करने में मदद मिल सके।{{citation needed|date=July 2011}}
* [[डिजिटल उपकरण निगम]] ने अपने अनुवाद उपकरणों के साथ समान सफलता हासिल की ताकि उपयोगकर्ताओं को [[जटिल निर्देश सेट कंप्यूटर]] [[VAX]] आर्किटेक्चर से DEC अल्फा RISC आर्किटेक्चर में माइग्रेट करने में मदद मिल सके।{{citation needed|date=July 2011}}
* [[Hewlett-Packard]] ARIES (ऑटोमैटिक री-ट्रांसलेशन एंड इंटीग्रेटेड एनवायरनमेंट सिमुलेशन) एक सॉफ्टवेयर है<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> ARIES तेज़ दुभाषिया बिना किसी उपयोगकर्ता हस्तक्षेप के गैर-विशेषाधिकार प्राप्त [[PA-RISC]] निर्देशों के एक पूर्ण सेट का अनुकरण करता है। व्याख्या के दौरान, यह एप्लिकेशन के निष्पादन पैटर्न पर नज़र रखता है और रनटाइम पर केवल अक्सर निष्पादित कोड को देशी [[इटेनियम]] कोड में अनुवादित करता है। ARIES दो चरण के गतिशील अनुवाद को लागू करता है, एक ऐसी तकनीक जिसमें पहले चरण में अनुवादित कोड रनटाइम प्रोफ़ाइल जानकारी एकत्र करता है जिसका उपयोग दूसरे चरण के अनुवाद के दौरान अनुवादित कोड को और अधिक अनुकूलित करने के लिए किया जाता है। ARIES गतिशील रूप से अनुवादित कोड को मेमोरी बफर में संग्रहीत करता है जिसे कोड कैश कहा जाता है। अनुवादित मूल ब्लॉकों के आगे के संदर्भ सीधे कोड कैश में निष्पादित होते हैं और अतिरिक्त व्याख्या या अनुवाद की आवश्यकता नहीं होती है। ज्यादातर समय कोड कैश में निष्पादन सुनिश्चित करने के लिए अनुवादित कोड ब्लॉक के लक्ष्यों को बैक-पैच किया जाता है। अनुकरण के अंत में, ARIES मूल एप्लिकेशन को संशोधित किए बिना सभी अनुवादित कोड को हटा देता है। ARIES एमुलेशन इंजन पर्यावरण एमुलेशन को भी लागू करता है जो HP 9000 HP-UX एप्लिकेशन के सिस्टम कॉल, सिग्नल डिलीवरी, अपवाद प्रबंधन, थ्रेड प्रबंधन, डिबगिंग के लिए Hewlett-Packard [[GDB]] के एमुलेशन और एप्लिकेशन के लिए कोर फ़ाइल निर्माण का अनुकरण करता है।
* [[Hewlett-Packard]] ARIES (ऑटोमैटिक री-ट्रांसलेशन एंड इंटीग्रेटेड एनवायरनमेंट सिमुलेशन) एक सॉफ्टवेयर है<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> ARIES तेज़ दुभाषिया बिना किसी उपयोगकर्ता हस्तक्षेप के गैर-विशेषाधिकार प्राप्त [[PA-RISC]] निर्देशों के एक पूर्ण सेट का अनुकरण करता है। व्याख्या के दौरान, यह एप्लिकेशन के निष्पादन पैटर्न पर नज़र रखता है और रनटाइम पर केवल अक्सर निष्पादित कोड को देशी [[इटेनियम]] कोड में अनुवादित करता है। ARIES दो चरण के गतिशील अनुवाद को लागू करता है, एक ऐसी तकनीक जिसमें पहले चरण में अनुवादित कोड रनटाइम प्रोफ़ाइल जानकारी एकत्र करता है जिसका उपयोग दूसरे चरण के अनुवाद के दौरान अनुवादित कोड को और अधिक अनुकूलित करने के लिए किया जाता है। ARIES गतिशील रूप से अनुवादित कोड को मेमोरी बफर में संग्रहीत करता है जिसे कोड कैश कहा जाता है। अनुवादित मूल ब्लॉकों के आगे के संदर्भ सीधे कोड कैश में निष्पादित होते हैं और अतिरिक्त व्याख्या या अनुवाद की आवश्यकता नहीं होती है। ज्यादातर समय कोड कैश में निष्पादन सुनिश्चित करने के लिए अनुवादित कोड ब्लॉक के लक्ष्यों को बैक-पैच किया जाता है। अनुकरण के अंत में, ARIES मूल एप्लिकेशन को संशोधित किए बिना सभी अनुवादित कोड को हटा देता है। ARIES एमुलेशन इंजन पर्यावरण एमुलेशन को भी लागू करता है जो HP 9000 HP-UX एप्लिकेशन के सिस्टम कॉल, सिग्नल डिलीवरी, अपवाद प्रबंधन, थ्रेड प्रबंधन, डिबगिंग के लिए Hewlett-Packard [[GDB]] के एमुलेशन और एप्लिकेशन के लिए कोर फ़ाइल निर्माण का अनुकरण करता है।
* DEC ने x86 एप्लिकेशन को अल्फा एप्लिकेशन में बदलने के लिए FX!32 बाइनरी ट्रांसलेटर बनाया।<ref name="Wharton_1994"/>* सन माइक्रोसिस्टम्स के [[वाबी (सॉफ्टवेयर)]] सॉफ्टवेयर में x86 से स्पार्क निर्देशों के लिए गतिशील अनुवाद शामिल था।
* DEC ने x86 एप्लिकेशन को अल्फा एप्लिकेशन में बदलने के लिए FX!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|''The smart microprocessor consists of a hardware [[VLIW]] core as its engine and a software layer called Code Morphing software. The Code Morphing software acts as a shell […] morphing or translating [[x86]] instructions to native Crusoe instructions. In addition, the Code Morphing software contains a dynamic compiler and code optimizer […] The result is increased performance at the least amount of power. […] [This] allows Transmeta to evolve the VLIW hardware and Code Morphing software separately without affecting the huge base of software applications.''}}
* जनवरी 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|''The smart microprocessor consists of a hardware [[VLIW]] core as its engine and a software layer called Code Morphing software. The Code Morphing software acts as a shell […] morphing or translating [[x86]] instructions to native Crusoe instructions. In addition, the Code Morphing software contains a dynamic compiler and code optimizer […] The result is increased performance at the least amount of power. […] [This] allows Transmeta to evolve the VLIW hardware and Code Morphing software separately without affecting the huge base of software applications.''}}
* [[इंटेल]] कॉर्पोरेशन ने [[IA-32 निष्पादन परत]] विकसित और कार्यान्वित किया - इटेनियम-आधारित सिस्टम पर IA-32 अनुप्रयोगों का समर्थन करने के लिए डिज़ाइन किया गया एक डायनेमिक बाइनरी ट्रांसलेटर, जिसे इटेनियम आर्किटेक्चर के लिए [[Microsoft]] Windows सर्वर में शामिल किया गया था, साथ ही साथ [[Linux]] के कई स्वादों में भी शामिल किया गया था। [[Red Hat]] और [[SUSE Linux]] सहित। इसने IA-32 अनुप्रयोगों को इटेनियम प्रोसेसर पर देशी IA-32 मोड का उपयोग करने की तुलना में तेज़ी से चलाने की अनुमति दी।
* [[इंटेल]] कॉर्पोरेशन ने [[IA-32 निष्पादन परत]] विकसित और कार्यान्वित किया - इटेनियम-आधारित सिस्टम पर IA-32 अनुप्रयोगों का समर्थन करने के लिए डिज़ाइन किया गया एक डायनेमिक द्विआधारी ट्रांसलेटर, जिसे इटेनियम आर्किटेक्चर के लिए [[Microsoft]] Windows सर्वर में शामिल किया गया था, साथ ही साथ [[Linux]] के कई स्वादों में भी शामिल किया गया था। [[Red Hat]] और [[SUSE Linux]] सहित। इसने IA-32 अनुप्रयोगों को इटेनियम प्रोसेसर पर देशी IA-32 मोड का उपयोग करने की तुलना में तेज़ी से चलाने की अनुमति दी।
* [[डॉल्फिन (एमुलेटर)]] ([[खेल घन]]/[[Wii]] के लिए एक एमुलेटर) x86 और AArch64 के लिए PowerPC कोड का JIT पुनर्संकलन करता है।
* [[डॉल्फिन (एमुलेटर)]] ([[खेल घन]]/[[Wii]] के लिए एक एमुलेटर) x86 और AArch64 के लिए PowerPC कोड का JIT पुनर्संकलन करता है।


=== हार्डवेयर में डायनेमिक बाइनरी ट्रांसलेशन के उदाहरण ===
=== हार्डवेयर में डायनेमिक द्विआधारी ट्रांसलेशन के उदाहरण ===
* x86 Intel CPUs चूंकि [[पेंटियम प्रो]] [[जटिल निर्देश सेट कंप्यूटिंग]] x86 निर्देशों को अधिक RISC-जैसे आंतरिक [[माइक्रो आपरेशन]] में ट्रांसलेट करता है।
* x86 Intel CPUs चूंकि [[पेंटियम प्रो]] [[जटिल निर्देश सेट कंप्यूटिंग]] x86 निर्देशों को अधिक RISC-जैसे आंतरिक [[माइक्रो आपरेशन]] में ट्रांसलेट करता है।
* [[Nvidia]] [[Tegra]] K1 डेनवर एआरएम आर्किटेक्चर निर्देशों को एक धीमे हार्डवेयर डिकोडर पर अपने मूल माइक्रोकोड निर्देशों में अनुवादित करता है और हॉट कोड के लिए एक सॉफ्टवेयर बाइनरी ट्रांसलेटर का उपयोग करता है।{{citation needed|date=February 2015}}
* [[Nvidia]] [[Tegra]] K1 डेनवर एआरएम आर्किटेक्चर निर्देशों को एक धीमे हार्डवेयर डिकोडर पर अपने मूल माइक्रोकोड निर्देशों में अनुवादित करता है और हॉट कोड के लिए एक सॉफ्टवेयर द्विआधारी ट्रांसलेटर का उपयोग करता है।{{citation needed|date=February 2015}}




== यह भी देखें ==
== यह भी देखें ==
* [[बाइनरी ऑप्टिमाइज़ेशन]]
* [[बाइनरी ऑप्टिमाइज़ेशन|द्विआधारी ऑप्टिमाइज़ेशन]]
* बाइनरी पुनर्संकलन
* द्विआधारी पुनर्संकलन
* गतिशील पुनर्संकलन
* गतिशील पुनर्संकलन
* अभी-अभी संकलन
* अभी-अभी संकलन

Revision as of 09:12, 3 March 2023

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

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

अभिप्रेरण

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

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

स्टैटिक द्विआधारी ट्रांसलेशन

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

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


स्टैटिक द्विआधारी ट्रांसलेशन के उदाहरण

हनीवेल ने अपने हनीवेल 200 श्रृंखला के कंप्यूटरों के लिए मुक्तिदाता (हनीवेल) नामक एक कार्यक्रम प्रदान किया; यह आईबीएम 1400 श्रृंखला के कंप्यूटरों के कार्यक्रमों को हनीवेल 200 श्रृंखला के कार्यक्रमों में अनुवाद कर सकता है।[2] 2014 में, 1998 के वीडियो गेम StarCraft (वीडियो गेम) का एक एआरएम वास्तुकला संस्करण स्थिर पुनर्संयोजन और मूल x86 संस्करण के अतिरिक्त रिवर्स इंजीनियरिंग द्वारा उत्पन्न किया गया था।[3][4] पेंडोरा (कंसोल) हैंडहेल्ड समुदाय आवश्यक उपकरण विकसित करने में सक्षम था[5] अपने दम पर और इस तरह के अनुवादों को कई बार सफलतापूर्वक प्राप्त करना।[6][7] उदाहरण के लिए, 2014 में वीडियो गेम क्यूब विश्व की प्रक्रियात्मक पीढ़ी के लिए एक सफल x86-to-x64 स्थिर पुनर्संकलन उत्पन्न किया गया था।[8] एक अन्य उदाहरण वीडियोगेम सुपर मारियो ब्रदर्स का निन्टेंडो एंटरटेनमेंट सिस्टम-टू-एक्स 86 स्टैटिकली रीकंपाइल्ड संस्करण है, जिसे 2013 में एलएलवीएम के उपयोग के तहत उत्पन्न किया गया था।[9] 2004 में Nintendo में स्कॉट इलियट और फिलिप आर हचिंसन ने खेल का लड़का द्विआधारी से सी कोड उत्पन्न करने के लिए एक उपकरण विकसित किया जिसे तब एक नए प्लेटफॉर्म के लिए संकलित किया जा सकता था और एयरलाइन मनोरंजन प्रणालियों में उपयोग के लिए एक हार्डवेयर लाइब्रेरी से जोड़ा जा सकता था।[10] 1995 में बेल संचार अनुसंधान में नॉर्मन रैमसे और प्रिंसटन विश्वविद्यालय के कंप्यूटर साइंस विभाग में मैरी एफ. फर्नांडीज ने द न्यू जर्सी मशीन-कोड टूलकिट विकसित किया, जिसमें स्टैटिक असेंबली ट्रांसलेशन के लिए बुनियादी उपकरण थे।[11]


डायनेमिक द्विआधारी ट्रांसलेशन

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

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

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

सॉफ्टवेयर में डायनेमिक द्विआधारी ट्रांसलेशन के उदाहरण

  • Apple कंप्यूटर ने Motorola 68000 श्रृंखला कोड के लिए उनके Apple Macintosh की PowerPC लाइन में एक डायनेमिक ट्रांसलेटिंग एम्यूलेटर लागू किया,[12]जिसने बहुत उच्च स्तर की विश्वसनीयता, प्रदर्शन और अनुकूलता हासिल की (मैक 68K एमुलेटर देखें)। इसने Apple को मशीनों को केवल आंशिक रूप से देशी ऑपरेटिंग सिस्टम के साथ बाज़ार में लाने की अनुमति दी, और अंतिम उपयोगकर्ता सॉफ़्टवेयर में अपने निवेश को जोखिम में डाले बिना नए, तेज़ आर्किटेक्चर को अपना सकते थे। आंशिक रूप से क्योंकि एमुलेटर इतना सफल था, ऑपरेटिंग सिस्टम के कई हिस्से अनुकरणीय बने रहे। 2001 में Mac OS X (10.0) के रिलीज़ होने तक PowerPC नेटिव ऑपरेटिंग सिस्टम (OS) में पूर्ण परिवर्तन नहीं किया गया था। मैक ओएस एक्स 10.5 तक।)
  • मैक ओएस एक्स 10.4 | इंटेल-आधारित मैक के क्लासिक (मैक ओएस एक्स) 10.4.4 ने पीपीसी-आधारित हार्डवेयर से x86 तक ऐप्पल के संक्रमण को आसान बनाने के लिए रोसेटा (सॉफ्टवेयर) गतिशील अनुवाद परत पेश की। Transitive Corporation द्वारा Apple के लिए विकसित किया गया, Rosetta सॉफ़्टवेयर Transitive के QuickTransit समाधान का कार्यान्वयन है।
  • QuickTransit ने अपने उत्पाद जीवन काल के दौरान SPARC→x86, x86→PowerPC और MIPS आर्किटेक्चर → Itanium 2 अनुवाद समर्थन भी प्रदान किया।
  • डिजिटल उपकरण निगम ने अपने अनुवाद उपकरणों के साथ समान सफलता हासिल की ताकि उपयोगकर्ताओं को जटिल निर्देश सेट कंप्यूटर VAX आर्किटेक्चर से DEC अल्फा RISC आर्किटेक्चर में माइग्रेट करने में मदद मिल सके।[citation needed]
  • Hewlett-Packard ARIES (ऑटोमैटिक री-ट्रांसलेशन एंड इंटीग्रेटेड एनवायरनमेंट सिमुलेशन) एक सॉफ्टवेयर है[13] डायनेमिक द्विआधारी ट्रांसलेशन सिस्टम जो एचपीई वफ़ादारी सर्वर के लिए एचपी-यूएक्स 11i पर एचपी 9000 एचपी-यूएक्स अनुप्रयोगों को पारदर्शी और सटीक रूप से निष्पादित करने के लिए दो चरण के गतिशील अनुवाद के साथ फास्ट कोड व्याख्या को जोड़ता है।[14] ARIES तेज़ दुभाषिया बिना किसी उपयोगकर्ता हस्तक्षेप के गैर-विशेषाधिकार प्राप्त PA-RISC निर्देशों के एक पूर्ण सेट का अनुकरण करता है। व्याख्या के दौरान, यह एप्लिकेशन के निष्पादन पैटर्न पर नज़र रखता है और रनटाइम पर केवल अक्सर निष्पादित कोड को देशी इटेनियम कोड में अनुवादित करता है। ARIES दो चरण के गतिशील अनुवाद को लागू करता है, एक ऐसी तकनीक जिसमें पहले चरण में अनुवादित कोड रनटाइम प्रोफ़ाइल जानकारी एकत्र करता है जिसका उपयोग दूसरे चरण के अनुवाद के दौरान अनुवादित कोड को और अधिक अनुकूलित करने के लिए किया जाता है। ARIES गतिशील रूप से अनुवादित कोड को मेमोरी बफर में संग्रहीत करता है जिसे कोड कैश कहा जाता है। अनुवादित मूल ब्लॉकों के आगे के संदर्भ सीधे कोड कैश में निष्पादित होते हैं और अतिरिक्त व्याख्या या अनुवाद की आवश्यकता नहीं होती है। ज्यादातर समय कोड कैश में निष्पादन सुनिश्चित करने के लिए अनुवादित कोड ब्लॉक के लक्ष्यों को बैक-पैच किया जाता है। अनुकरण के अंत में, ARIES मूल एप्लिकेशन को संशोधित किए बिना सभी अनुवादित कोड को हटा देता है। ARIES एमुलेशन इंजन पर्यावरण एमुलेशन को भी लागू करता है जो HP 9000 HP-UX एप्लिकेशन के सिस्टम कॉल, सिग्नल डिलीवरी, अपवाद प्रबंधन, थ्रेड प्रबंधन, डिबगिंग के लिए Hewlett-Packard GDB के एमुलेशन और एप्लिकेशन के लिए कोर फ़ाइल निर्माण का अनुकरण करता है।
  • DEC ने x86 एप्लिकेशन को अल्फा एप्लिकेशन में बदलने के लिए FX!32 द्विआधारी ट्रांसलेटर बनाया।[12]* सन माइक्रोसिस्टम्स के वाबी (सॉफ्टवेयर) सॉफ्टवेयर में x86 से स्पार्क निर्देशों के लिए गतिशील अनुवाद शामिल था।
  • जनवरी 2000 में, हस्तांतरण कॉर्पोरेशन ने ट्रांसम्यूटेशनल क्रूसो नामक एक उपन्यास प्रोसेसर डिजाइन की घोषणा की।[15][16] एफएक्यू से[17] उनकी वेब साइट पर,

    The smart microprocessor consists of a hardware VLIW core as its engine and a software layer called Code Morphing software. The Code Morphing software acts as a shell […] morphing or translating x86 instructions to native Crusoe instructions. In addition, the Code Morphing software contains a dynamic compiler and code optimizer […] The result is increased performance at the least amount of power. […] [This] allows Transmeta to evolve the VLIW hardware and Code Morphing software separately without affecting the huge base of software applications.

  • इंटेल कॉर्पोरेशन ने IA-32 निष्पादन परत विकसित और कार्यान्वित किया - इटेनियम-आधारित सिस्टम पर IA-32 अनुप्रयोगों का समर्थन करने के लिए डिज़ाइन किया गया एक डायनेमिक द्विआधारी ट्रांसलेटर, जिसे इटेनियम आर्किटेक्चर के लिए Microsoft Windows सर्वर में शामिल किया गया था, साथ ही साथ Linux के कई स्वादों में भी शामिल किया गया था। Red Hat और SUSE Linux सहित। इसने IA-32 अनुप्रयोगों को इटेनियम प्रोसेसर पर देशी IA-32 मोड का उपयोग करने की तुलना में तेज़ी से चलाने की अनुमति दी।
  • डॉल्फिन (एमुलेटर) (खेल घन/Wii के लिए एक एमुलेटर) x86 और AArch64 के लिए PowerPC कोड का JIT पुनर्संकलन करता है।

हार्डवेयर में डायनेमिक द्विआधारी ट्रांसलेशन के उदाहरण


यह भी देखें

संदर्भ

  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.


अग्रिम पठन