إصدارات جديدة من محاكيات Box86 و Box64 تسمح لك بتشغيل ألعاب x86 على أنظمة ARM

تم نشر إصدارات محاكيات Box86 0.2.6 و Box64 0.1.8 لتشغيل برامج Linux المصممة لهياكل x86 و x86_64 على معالجات ARM و ARM64 و PPC64LE و RISC-V. تتطور المشاريع بالتزامن مع فريق تطوير واحد - يقتصر Box86 على القدرة على تشغيل تطبيقات 32 بت x86 ، بينما يوفر Box64 القدرة على تشغيل ملفات تنفيذية 64 بت. يولي المشروع اهتمامًا كبيرًا لتنظيم إطلاق تطبيقات الألعاب ، بما في ذلك القدرة على تشغيل Windows builds من خلال Wine و Proton. تمت كتابة النصوص الأصلية للمشروع بلغة C وتوزيعها (Box86، Box64) بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.

تتمثل إحدى ميزات المشروع في استخدام نموذج تنفيذ مختلط ، حيث يتم تطبيق المحاكاة فقط على رمز الجهاز الخاص بالتطبيق نفسه والمكتبات المحددة. مكتبات النظام العامة ، بما في ذلك libc و libm و GTK و SDL و Vulkan و OpenGL ، يتم استبدالها بمتغيرات أصلية في الأنظمة الأساسية المستهدفة. وبالتالي ، يتم تنفيذ مكالمات المكتبة دون مضاهاة ، مما يسمح بزيادة كبيرة في الأداء.

يتم تنفيذ محاكاة الكود الذي لا يحتوي على بدائل أصلية للمنصة المستهدفة باستخدام تقنية إعادة الترجمة الديناميكية (DynaRec) من مجموعة تعليمات الآلة إلى أخرى. مقارنةً بتفسير تعليمات الماكينة ، تُظهر إعادة التجميع الديناميكي أداءً أعلى من 5 إلى 10 مرات.

في اختبارات الأداء ، عند التشغيل على منصات Armhf و Aarch86 ، تفوقت محاكيات Box64 و Box64 بشكل كبير على مشاريع QEMU و FEX-emu ، وفي بعض الاختبارات (glmark2 ، openarena) حققوا أداءً مطابقًا لتشغيل تجميع أصلي للمنصة المستهدفة . في معايير 7-zip و dav1d الحوسبية المكثفة ، كان أداء Box64 بين 27٪ و 53٪ من أداء التطبيق الأصلي (مقارنة بـ QEMU عند 5-16٪ و FEX-emu بنسبة 13-26٪). بالإضافة إلى ذلك ، تم إجراء مقارنة مع محاكي Rosetta 2 الذي تستخدمه Apple لتشغيل كود x86 على الأنظمة التي تحتوي على شريحة ARM M1. أجرت Rosetta 2 الاختبار المستند إلى 7zip على 71٪ من التصميم الأصلي ، و Box64 بنسبة 57٪.

إصدارات جديدة من محاكيات Box86 و Box64 تسمح لك بتشغيل ألعاب x86 على أنظمة ARM

من حيث توافق التطبيقات ، من أصل 165 لعبة تم اختبارها ، تم ربح 70٪ بنجاح. حوالي 10٪ عمل أكثر ، ولكن مع بعض التحفظات والقيود. تشمل الألعاب المدعومة WorldOfGoo و Airline Tycoon Deluxe و FTL و Undertale و A Risk of Rain و Cook Serve Delicious ومعظم ألعاب GameMaker. من بين الألعاب التي تم ملاحظة المشكلات بها ، تم ذكر الألعاب القائمة على محرك Unity3D ، وهي مرتبطة بحزمة Mono ، والتي لا تعمل مضاهاة دائمًا حتى الآن بسبب تجميع JIT المستخدم في Mono ، كما أنها تحتوي على رسومات عالية إلى حد ما المتطلبات التي لا يمكن تحقيقها دائمًا على لوحات ARM. يقتصر استبدال مكتبات تطبيقات GTK حاليًا على GTK2 (استبدال GTK3 / 4 لم يتم تنفيذه بالكامل).

التغييرات الرئيسية في الإصدارات الجديدة:

  • تمت إضافة الربط لمكتبة Vulkan. تمت إضافة دعم لواجهة برمجة تطبيقات رسومات Vulkan و DXVK (تنفيذ DXGI و Direct3D 9 و 10 و 11 أعلى Vulkan).
  • ارتباطات محسنة لمكتبات GTK. الروابط المضافة لـ gstreamer والمكتبات شائعة الاستخدام في تطبيقات GTK.
  • تمت إضافة الدعم الأولي (حتى الآن وضع الترجمة الفورية فقط) لبنى RISC-V و PPC64LE.
  • تم إجراء إصلاحات للأخطاء لتحسين دعم SteamPlay وطبقة Proton. من الممكن تشغيل العديد من ألعاب Linux و Windows من Steam على لوحات AArch64 مثل Raspberry Pi 3 و 4.
  • تحسين إدارة الذاكرة وسلوك mmap ومراقبة انتهاكات حماية الذاكرة.
  • دعم محسّن لاستنساخ استدعاء النظام في libc. دعم إضافي لمكالمات النظام الجديدة.
  • في محرك إعادة الترجمة الديناميكي ، تم تحسين العمل مع سجلات SSE / x87 ، وتمت إضافة دعم لرموز الماكينة الجديدة ، وتم تحسين تحويلات الأرقام العائمة والمزدوجة ، وتم تحسين معالجة القفزات الداخلية ، وتم دعم البنى الجديدة مبسط.
  • تحسين رفع ملف ELF.

المصدر: opennet.ru

إضافة تعليق