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

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

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

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

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

अनुप्रयोग

 * कई जावा आभासी मशीनों में गतिशील पुनर्संकलक(रीकंपलर) की सुविधा होती है
 * एक्स86 पर मैक ओएस एक्स के लिए एप्प्ल का रोसेटा (सॉफ्टवेयर), पावरपीसी कूट भाषा को एक्स86 आर्किटेक्चर पर चलाने की अनुमति देता है।
 * मैक 68K एमुलेटर के बाद के संस्करणों का उपयोग क्लासिक मैक ओएस में पावरपीसी हार्डवेयर पर 680x0 कूट भाषा चलाने के लिए किया गया।
 * साइको, पायथन (प्रोग्रामिंग भाषा) के लिए एक विशेष संकलक है ।
 * एचपी डायनेमो परियोजना, एक पारदर्शी बाइनरी गतिशील संकलक अनुकूलन का एक उदाहरण है।
 * डायनेमो रियो, डायनेमो का एक ओपन-सोर्स है जो एआरएम, x86-64 और IA-64 (इटेनियम) निर्देश सेट के साथ काम करता है।


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

एमुलेटर

 * PCSX2, एक प्लेस्टेशन 2 एमुलेटर, में एक पुनर्संकलक है जिसे माइक्रो वीयू कहा जाता है, जो सुपरवीयू का पार्ट है।
 * जीसीईएमयू, एक खेल घन एमुलेटर है।
 * जीसीईएमयू एक गेमक्यूब इम्यूलेटर है।
 * जेम[7] एमएसए के लिए एक गेम बॉय इम्यूलेटर एक डायनेमिक रीकंपलर का अनुकूलन का उपयोग करता है।
 * डीएसएमयूएमई एक निंटेंडो डी एस एमुलेटर, एक डायनारेक विकल्प का रूप है |
 * सोयविज़ का पीएसपी, एक प्लेस्टेशन पोर्टेबल इम्यूलेटर, एक डायनारेक विकल्प है।
 * मुपेन 64 प्लस, एक निन्टेंडो 64 एमुलेटर एक से अधिक प्लेटफोर्म है।
 * याबॉस, एक बहु-मंच शनि एमुलेटर है।
 * पीपीएसएसपीपी,एक बहु-मंच प्लेस्टेशन पोर्टेबल एमुलेटर, डिफाल्ट रूप से एक जेआईटी गतिशील रीकंपलर का उपयोग करता है।

यह भी देखें

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

बाहरी संबंध

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