إعادة التجميع الديناميكي
في علوم الحاسوب ، تُعدّ إعادة الترجمة الديناميكية ميزةً لبعض المحاكيات والآلات الافتراضية ، حيث يُمكن للنظام إعادة ترجمة جزء من البرنامج أثناء التنفيذ. ومن خلال الترجمة أثناء التنفيذ، يستطيع النظام تخصيص الكود المُولّد ليعكس بيئة تشغيل البرنامج، وربما إنتاج كود أكثر كفاءةً من خلال استغلال معلومات غير متاحة للمترجم الثابت التقليدي .
الاستخدامات
تُستخدم معظم برامج إعادة الترجمة الديناميكية لتحويل شيفرة الآلة بين البنى المعمارية المختلفة أثناء التشغيل. تُعد هذه مهمة ضرورية في محاكاة منصات الألعاب القديمة. في حالات أخرى، قد يستخدم النظام إعادة الترجمة الديناميكية كجزء من استراتيجية تحسين تكيفية لتنفيذ تمثيل برنامج قابل للنقل، مثل شيفرة بايت Java أو .NET Common Language Runtime . كما تستخدم أدوات تصحيح الأخطاء عالية السرعة إعادة الترجمة الديناميكية لتقليل المساحة الإضافية التي تستهلكها معظم تقنيات إلغاء التحسين ، بالإضافة إلى ميزات أخرى مثل ترحيل الخيوط الديناميكي .
المهام
المهام الرئيسية التي يجب على المُترجم الديناميكي القيام بها هي:
- قراءة رمز الآلة من المنصة المصدرية
- إصدار رمز الآلة للمنصة المستهدفة
قد يقوم برنامج إعادة الترجمة الديناميكي أيضًا ببعض المهام المساعدة:
- إدارة ذاكرة تخزين مؤقتة للتعليمات البرمجية المعاد تجميعها
- تحديث عدد الدورات المنقضية على المنصات المزودة بسجلات عدد الدورات
- إدارة فحص المقاطعات
- توفير واجهة لأجهزة الدعم الافتراضية، على سبيل المثال وحدة معالجة الرسومات (GPU).
- تحسين هياكل التعليمات البرمجية ذات المستوى الأعلى لتشغيلها بكفاءة على الأجهزة المستهدفة (انظر أدناه)
التطبيقات
- تتميز العديد من الآلات الافتراضية لجافا بإعادة الترجمة الديناميكية.
- يسمح برنامج Rosetta من Apple لنظام التشغيل Mac OS X على معمارية x86 بتشغيل كود PowerPC على معمارية x86 .
- تم استخدام الإصدارات اللاحقة من محاكي Mac 68K في نظام التشغيل Mac OS الكلاسيكي لتشغيل كود 680x0 على أجهزة PowerPC.
- Psyco ، وهو مترجم متخصص للغة بايثون .
- مشروع HP Dynamo ، مثال على مُحسِّن ثنائي ديناميكي شفاف . [ 1 ]
- DynamoRIO ، برنامج مفتوح المصدر خلف لبرنامج Dynamo، يعمل مع مجموعات تعليمات ARM و x86-64 و IA-64 (Itanium). [ 2 ] [ 3 ]
- تستخدم الآلة الافتراضية Vx32 إعادة التجميع الديناميكي لإنشاء بيئات معزولة لبنية x86 مستقلة عن نظام التشغيل من أجل مكونات التطبيقات الإضافية الآمنة .
- برنامج Microsoft Virtual PC لنظام التشغيل Mac، والذي كان يستخدم لتشغيل كود x86 على PowerPC.
- يستخدم برنامج FreeKEYB، وهو برنامج تشغيل لوحة مفاتيح ووحدة تحكم DOS دولي مزود بالعديد من التحسينات في سهولة الاستخدام، تقنية تعديل الكود ذاتيًا وإزالة الكود غير المستخدم ديناميكيًا لتقليل حجمه في الذاكرة بناءً على إعدادات المستخدم (الميزات واللغات والتخطيطات المختارة) وبيئة التشغيل الفعلية (نوع نظام التشغيل وإصداره، وبرامج التشغيل المحملة، والأجهزة الأساسية)، مع حل التبعيات تلقائيًا، وإعادة توطين وإعادة تجميع أقسام الكود ديناميكيًا على مستوى البايت، وتحسين سلاسل العمليات بناءً على المعلومات الدلالية المتوفرة في الكود المصدري، ومعلومات إعادة التوطين التي تولدها أدوات خاصة أثناء التجميع، ومعلومات الملف الشخصي التي يتم الحصول عليها عند التحميل. [ 4 ]
- من المفترض على نطاق واسع أن وظيفة التوافق مع الإصدارات السابقة لجهاز Xbox 360 (أي تشغيل الألعاب المكتوبة لجهاز Xbox الأصلي ) تستخدم إعادة التجميع الديناميكي.
- تتيح تقنية Rosetta 2 من Apple لمعالجات Apple silicon ترجمة العديد من التطبيقات التي تم تجميعها للمعالجات القائمة على x86-64 لتنفيذها على معالجات Apple silicon.
- كيو إي إم يو
المحاكيات
- PCSX2 ، [ 5 ] وهو محاكي بلاي ستيشن 2 ، يحتوي على برنامج إعادة تجميع يسمى "microVU"، وهو خليفة "SuperVU".
- GCemu، [ 6 ] محاكي GameCube .
- GEM، [ 7 ] محاكي Game Boy لجهاز MSX يستخدم مُعيد تجميع ديناميكي مُحسِّن.
- يحتوي برنامج DeSmuME، [ 8 ] وهو محاكي لجهاز Nintendo DS ، على خيار dynarec.
- يحتوي برنامج Soywiz's Psp، [ 9 ] وهو محاكي لجهاز PlayStation Portable ، على خيار dynarec.
- Mupen64Plus ، وهو محاكي متعدد المنصات لجهاز نينتندو 64. [ 10 ]
- يابوز، محاكي سيجا ساترن متعدد المنصات . [ 11 ]
- يستخدم برنامج PPSSPP ، وهو محاكي متعدد المنصات لجهاز PlayStation Portable ، مُجمِّعًا ديناميكيًا بتقنية JIT بشكل افتراضي. [ 12 ]
- PCem هو برنامج محاكاة لمنصات الحواسيب القديمة، ويمكن استخدامه على نظامي التشغيل ويندوز ولينكس. يستخدم البرنامج مُعيد الترجمة لتحويل استدعاءات وحدة المعالجة المركزية القديمة إلى تعليمات وحدة المعالجة المركزية الحديثة، مما يُحسّن سرعة المحاكاة بشكل عام.
- 86Box هو برنامج مشتق من PCem يهدف إلى محاكاة أكثر دقة. ويستخدم برنامج إعادة التجميع لنفس الغرض.
انظر أيضاً
مراجع
- ↑ «تقرير فني من مختبرات HP حول Dynamo» . مؤرشف من الأصل بتاريخ 7 يوليو 2008. تم الاطلاع عليه بتاريخ 22 يناير 2006 .
- ↑ "منصة أدوات القياس الديناميكي DynamoRIO" . مؤرشفة من الأصل بتاريخ 2019-09-05 . تم الاطلاع عليها بتاريخ 2016-04-12 .
- ↑ "DynamoRIO" . GitHub . 2021-10-15.
- ↑ بول، ماتياس ر.؛ فرينك، أكسل سي. (1997-10-13) [نُشر لأول مرة عام 1991]، FreeKEYB - برنامج تشغيل لوحة المفاتيح ووحدة التحكم DOS المحسّن (دليل المستخدم) ( الإصدار 6.5).
- ↑ "PCSX 2" . مؤرشف من الأصل بتاريخ 29-10-2005 . تم الاطلاع عليه بتاريخ 15-04-2009 .
- ↑ petebernert (2015-10-03). "GCemu" . SourceForge .
- ↑ "محاكي جيم بوي لجهاز MSX | الصورة الجديدة" . GEM . تم الاسترجاع في 12 يناير 2014 .
- ↑ "DeSmuME v0.9.9" .
- ^ منشور بواسطة كارلوس باليستيروس فيلاسكو (28 يوليو 2013). "محاكي Soywiz's PSP: الإصدار : Soywiz's Psp Emulator 2013-07-28 (r525)" . Pspemu.soywiz.com . تم الاسترجاع 2014/01/12 .
- ↑ Mupen64Plus
- ↑ "SH2" .
- ↑ "PPSSPP - محاكي PSP لأنظمة Android وWindows وLinux وiOS وMacOSX" . ppsspp.org . تم الاطلاع عليه بتاريخ 17 نوفمبر 2021 .
روابط خارجية
- برنامج تعليمي لإعادة تجميع البرامج الديناميكية . أرشيف على موقع Wayback Machine (تمت أرشفته في 11 يونيو 2021 ).
- منشورات المدونة حول كتابة برنامج إعادة تجميع ديناميكي من MIPS إلى PPC .
- المحاكاة الافتراضية
- بناء المترجم
- برنامج المحاكاة
