गतिशील पुनर्संकलन

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

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

कार्य
डायनेमिक रीकंपलर को जिन मुख्य कार्यों को करना होता है, वे हैं:
 * सोर्स प्लेटफॉर्म से मशीन कोड में पढ़ना
 * लक्ष्य प्लेटफॉर्म के लिए एमिटिंग मशीन कोड

एक गतिशील रीकंपलर कुछ सहायक कार्य भी कर सकता है:
 * पुनः संकलित कोड के कैश (कंप्यूटिंग) का प्रबंधन
 * चक्र गणना रजिस्टरों के साथ प्लेटफार्मों पर बीता हुआ चक्र गणना का अद्यतन करना
 * व्यवधान जाँच का प्रबंधन
 * वर्चुअलाइज्ड सपोर्ट हार्डवेयर के लिए एक इंटरफेस प्रदान करना, उदाहरण के लिए एक जीपीयू
 * लक्ष्य हार्डवेयर पर कुशलतापूर्वक चलाने के लिए उच्च-स्तरीय कोड संरचनाओं का अनुकूलन (नीचे देखें)

अनुप्रयोग
रेफरी>
 * कई जावा आभासी मशीनों में गतिशील पुनर्संकलन की सुविधा होती है।
 * x86 पर Mac OS X के लिए Apple का रोसेटा (सॉफ्टवेयर), PowerPC कोड को x86 आर्किटेक्चर पर चलाने की अनुमति देता है।
 * मैक 68K एमुलेटर के बाद के संस्करणों का उपयोग क्लासिक मैक ओएस में पावरपीसी हार्डवेयर पर 680x0 कोड चलाने के लिए किया गया।
 * प्स्य्को, पायथन (प्रोग्रामिंग भाषा) के लिए एक विशेषज्ञ संकलक।
 * एचपी डायनेमो परियोजना, एक पारदर्शी बाइनरी डायनेमिक संकलक अनुकूलन का एक उदाहरण।
 * डायनेमोरियो, एक खुला स्रोत सॉफ्टवेयर|डायनेमो का ओपन-सोर्स उत्तराधिकारी जो एआरएम वास्तुकला, x86-64 और आइए-64 (इटेनियम) इंस्ट्रक्शन सेट के साथ काम करता है।
 * Vx32 सुरक्षित अनुप्रयोग प्लग-इन (कंप्यूटिंग) के लिए ऑपरेटिंग सिस्टम-स्वतंत्र x86 आर्किटेक्चर सैंडबॉक्स बनाने के लिए गतिशील पुनर्संकलन को नियोजित करता है।
 * मैक के लिए माइक्रोसॉफ्ट वर्चुअल पीसी, पावरपीसी पर x86 कोड चलाने के लिए प्रयोग किया जाता है।
 * फ्रीकीबी, एक अंतरराष्ट्रीय डॉस कीबोर्ड और कंसोल ड्राइवर जिसमें कई प्रयोज्य संवर्द्धन के साथ स्वयं-संशोधित कोड और गतिशील मृत कोड उन्मूलन का उपयोग किया गया है ताकि इसके उपयोगकर्ता कॉन्फ़िगरेशन (चयनित सुविधाओं, भाषाओं, लेआउट) और वास्तविक रनटाइम पर्यावरण (ओएस) के आधार पर इसकी इन-मेमोरी छवि को कम किया जा सके। संस्करण और संस्करण, लोड किए गए ड्राइवर, अंतर्निहित हार्डवेयर), स्वचालित रूप से निर्भरता को हल करना, बाइट-स्तरीय ग्रैन्युलैरिटी पर कोड अनुभागों को गतिशील रूप से स्थानांतरित करना और पुनर्संयोजित करना और स्रोत कोड में प्रदान की गई सिमेंटिक जानकारी के आधार पर अनुकूलन, असेंबली और प्रोफ़ाइल जानकारी के दौरान विशेष उपकरणों द्वारा उत्पन्न स्थानांतरण जानकारी लोड समय पर प्राप्त किया।
 * Xbox 360 (यानी मूल Xbox (कंसोल) के लिए लिखे गए चल रहे गेम) की पश्चगामी संगतता कार्यक्षमता को व्यापक रूप से गतिशील पुनर्संकलन का उपयोग करने के लिए माना जाता है।
 * Apple सिलिकॉन के लिए Apple का रोसेटा 2, x86-64-आधारित प्रोसेसर के लिए संकलित कई अनुप्रयोगों को Apple सिलिकॉन पर निष्पादन के लिए अनुवादित करने की अनुमति देता है।

एम्युलेटर्स

 * पीसीएसएक्स2, एक PlayStation 2 एमुलेटर, में एक recompiler है जिसे microVU कहा जाता है, जो SuperVU का उत्तराधिकारी है।
 * जीसीईएमयू, एक खेल घन एमुलेटर।
 * रत्न, एमएसएक्स के लिए एक खेल का लड़का एमुलेटर एक अनुकूलन गतिशील रीकंपलर का उपयोग करता है।
 * डीएसएमयूएमई, एक Nintendo डी एस एमुलेटर, एक डायनारेक विकल्प है।
 * सोयविज़ का पीएसपी, एक प्लेस्टेशन पोर्टेबल इम्यूलेटर, एक डायनारेक विकल्प है।
 * Mupen64Plus, एक मल्टी-प्लेटफ़ॉर्म निन्टेंडो 64 एमुलेटर।
 * Yabause, एक बहु-मंच अब शनि एमुलेटर।
 * PPSSPP, एक बहु-मंच प्लेस्टेशन पोर्टेबल इम्यूलेटर, डिफ़ॉल्ट रूप से समय-समय पर संकलन डायनेमिक रीकंपलर का उपयोग करता है।

यह भी देखें

 * बाइनरी रीकंपाइलर
 * बाइनरी अनुवाद
 * प्लेटफॉर्म वर्चुअलाइजेशन सॉफ्टवेयर की तुलना
 * अभी-अभी संकलन
 * इंस्ट्रुमेंटेशन (कंप्यूटर प्रोग्रामिंग)

बाहरी संबंध

 * Dynamic recompiler tutorial
 * Blog posts about writing a MIPS to PPC dynamic recompiler