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

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

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

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

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

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

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

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

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

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

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

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

 * एप्पल कंप्यूटर ने मैकितोश कंप्यूटर की पावरपीसी लाइन में M68K कोड के लिए एक गतिशील अनुवाद एम्यूलेटर लागू किया, जिसने विश्वसनीयता, प्रदर्शन और अनुकूलता के बहुत उच्च स्तर हासिल किए (मैक 68K एमुलेटर देखें)। इसने एप्पल को केवल आंशिक रूप से देशी संचालन प्रणाली के साथ बाज़ार में लाने की अनुमति दी, ताकि अंतिम उपयोगकर्ता सॉफ़्टवेयर में अपने निवेश को जोखिम में डाले बिना नए, तेज़ आर्किटेक्चर को अपना सकते थे। आंशिक रूप से क्योंकि एमुलेटर इतना सफल था, इसलिय संचालन प्रणाली के कई हिस्से अनुकरणीय बने रहे। 2001 में मैक ओएस एक्स (10.0) के प्रकशित होने तक पावरपीसी देशी संचालन प्रणाली (OS) में पूर्ण परिवर्तन नहीं किया गया था। (मैक ओएस एक्स "क्लासिक" रनटाइम एनवायरनमेंट ने मैक ओएस एक्स 10.5 तक पावरपीसी मैक पर इस अनुकरण क्षमता की पेशकश जारी रखी।)
 * इंटेल-आधारित मैक के लिए मैक ओएस एक्स 10.4.4 ने ऐप्पल के पीपीसी-आधारित हार्डवेयर से x86 में संक्रमण को आसान बनाने के लिए रोसेटा गतिशील अनुवाद परत पेश की। सकर्मक निगम द्वारा एप्पल के लिए विकसित किया गया, रोसेटा सॉफ़्टवेयर सकर्मक के त्वरित पारगमन समाधान का कार्यान्वयन है।
 * QuickTransit ने अपने उत्पाद जीवन काल के दौरान SPARC→x86, x86→पावरपीसी और MIPS आर्किटेक्चर → Itanium 2 अनुवाद समर्थन भी प्रदान किया।
 * डिजिटल उपकरण निगम ने अपने अनुवाद उपकरणों के साथ समान सफलता हासिल की ताकि उपयोगकर्ताओं को जटिल निर्देश सेट कंप्यूटर VAX आर्किटेक्चर से DEC अल्फा RISC आर्किटेक्चर में माइग्रेट करने में मदद मिल सके।
 * Hewlett-Packard ARIES (ऑटोमैटिक री-ट्रांसलेशन एंड इंटीग्रेटेड एनवायरनमेंट सिमुलेशन) एक सॉफ्टवेयर है गतिशील द्विआधारी अनुवाद सिस्टम जो एचपीई वफ़ादारी सर्वर के लिए एचपी-यूएक्स 11i पर एचपी 9000 एचपी-यूएक्स अनुप्रयोगों को पारदर्शी और सटीक रूप से निष्पादित करने के लिए दो चरण के गतिशील अनुवाद के साथ फास्ट कोड व्याख्या को जोड़ता है। ARIES तेज़ दुभाषिया बिना किसी उपयोगकर्ता हस्तक्षेप के गैर-विशेषाधिकार प्राप्त PA-RISC निर्देशों के एक पूर्ण सेट का अनुकरण करता है। व्याख्या के दौरान, यह एप्लिकेशन के निष्पादन पैटर्न पर नज़र रखता है और रनटाइम पर केवल अक्सर निष्पादित कोड को देशी इटेनियम कोड में अनुवादित करता है। ARIES दो चरण के गतिशील अनुवाद को लागू करता है, एक ऐसी तकनीक जिसमें पहले चरण में अनुवादित कोड रनटाइम प्रोफ़ाइल जानकारी एकत्र करता है जिसका उपयोग दूसरे चरण के अनुवाद के दौरान अनुवादित कोड को और अधिक अनुकूलित करने के लिए किया जाता है। ARIES गतिशील रूप से अनुवादित कोड को मेमोरी बफर में संग्रहीत करता है जिसे कोड कैश कहा जाता है। अनुवादित मूल ब्लॉकों के आगे के संदर्भ सीधे कोड कैश में निष्पादित होते हैं और अतिरिक्त व्याख्या या अनुवाद की आवश्यकता नहीं होती है। ज्यादातर समय कोड कैश में निष्पादन सुनिश्चित करने के लिए अनुवादित कोड ब्लॉक के लक्ष्यों को बैक-पैच किया जाता है। अनुकरण के अंत में, ARIES मूल एप्लिकेशन को संशोधित किए बिना सभी अनुवादित कोड को हटा देता है। ARIES एमुलेशन इंजन पर्यावरण एमुलेशन को भी लागू करता है जो HP 9000 HP-UX एप्लिकेशन के सिस्टम कॉल, सिग्नल डिलीवरी, अपवाद प्रबंधन, थ्रेड प्रबंधन, डिबगिंग के लिए Hewlett-Packard GDB के एमुलेशन और एप्लिकेशन के लिए कोर फ़ाइल निर्माण का अनुकरण करता है।
 * DEC ने x86 एप्लिकेशन को अल्फा एप्लिकेशन में बदलने के लिए FX!32 द्विआधारी ट्रांसलेटर बनाया। * सन माइक्रोसिस्टम्स के वाबी (सॉफ्टवेयर) सॉफ्टवेयर में x86 से स्पार्क निर्देशों के लिए गतिशील अनुवाद शामिल था।
 * जनवरी 2000 में, हस्तांतरण कॉर्पोरेशन ने ट्रांसम्यूटेशनल क्रूसो नामक एक उपन्यास प्रोसेसर डिजाइन की घोषणा की। एफएक्यू से उनकी वेब साइट पर, "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 के लिए पावरपीसी कोड का JIT पुनर्संकलन करता है।

हार्डवेयर में गतिशील द्विआधारी अनुवाद के उदाहरण

 * चूंकि पेंटियम प्रो x86 इंटेल सीपीयू जटिल सीआईएससी x86 निर्देशों को अधिक आरआईएससी-जैसे आंतरिक सूक्ष्म संचालनो में अनुवादित करता है।
 * एनवीडिया टेग्रा K1 डेनवर स्लो हार्डवेयर डिकोडर पर एआरएम निर्देशों को उनके मूल माइक्रोकोड निर्देशों में अनुवादित करता है और हॉट कोड के लिए एक सॉफ्टवेयर द्विआधारी अनुवादक का उपयोग करता है।

यह भी देखें

 * द्विआधारी अनुकूलन
 * द्विआधारी पुनःसंयोजन
 * गतिशील पुनःसंयोजन
 * समय पर संकलन
 * निर्देश सेट अनुरूपक
 * प्रतिद्वंद्वी
 * वर्चुअल मशीन
 * प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना
 * शैडो मेमोरी