ما هو JIT؟ كيف تعيق قواعد Apple محاكيات الألعاب على iPhone

النقاط الرئيسية

  • يعد تجميع JIT أمرًا بالغ الأهمية لأداء المحاكي، ولكن Apple تقيده لأسباب أمنية.
  • تستخدم المحاكيات JIT لتحسين الأداء عن طريق إعادة تجميع الكود أثناء التشغيل.
  • قد تتغير قيود Apple، ولكن في الوقت الحالي، يجب على مستخدمي المحاكي الانتظار أو التفكير في كسر الحماية.



في حين يبدو أن شركة Apple قد فتحت الأبواب على مصراعيها عندما يتعلق الأمر بتطبيقات المحاكاة على iPhone وiPad وApple TV، ربما لاحظت أن بعض الأنظمة غائبة بشكل واضح عن القائمة. هناك احتمال كبير أن يكون ذلك بسبب ميزة معينة تُعرف باسم “JIT” التجميعية التي تقيدها قواعد متجر التطبيقات.


ما هو JIT؟

JIT compilation هو اختصار لـ “Just In Time” compilation. التجميع هو عملية تحويل كود البرمجة إلى كود آلي. يمكنك كتابة شيء ما، على سبيل المثال، في كود C ثم تجميعه لأي نظام، سواء كان وحدة معالجة مركزية x86 كما هو موجود في معظم أجهزة الكمبيوتر التي تعمل بنظام Windows أو وحدة معالجة مركزية ARM كما هو موجود في الهواتف المحمولة والأجهزة اللوحية.

تتمتع عملية التجميع في الوقت المناسب، على عكس التجميع المسبق، بالعديد من المزايا، وأهمها القدرة على التكيف مع ما يحدث حاليًا على الكمبيوتر وما يطلب المستخدم من البرنامج القيام به.


لماذا تحتاج المحاكيات إلى JIT؟

لقد وجد مطورو المحاكيات أن أسلوب JIT يسمح لهم بتحقيق مستويات الأداء والكفاءة التي قد تكون مستحيلة بخلاف ذلك. باستخدام أسلوب JIT، يمكن إعادة تجميع كود وحدة المعالجة المركزية المُحاكي من النظام الأصلي إلى كود أصلي لنظام المضيف المستهدف أثناء التشغيل. بمجرد إعادة تجميع هذا الكود، يمكن تخزينه مؤقتًا واستخدامه في المرة التالية التي يتم فيها إجراء نفس المكالمة دون التجميع مرة أخرى.

جهاز iPad يعمل بنظام تشغيل G-Police بجانب نسخة أصلية مادية من اللعبة ووحدة تحكم PS4
سيدني لو بتلر / خبيرة في كيفية القيام بالأشياء


باستخدام طريقة JIT، من الممكن إنشاء كود قابل للتعديل ذاتيًا، وهو ما أصبح نهجًا شائعًا في محاكاة ألعاب الفيديو. وهذا ضروري في بعض الأنظمة لأن العديد من الأنظمة القديمة، وخاصة الأنظمة القائمة على الخراطيش، تقوم بتحميل الكود من الخراطيش بشكل ديناميكي وتعسفي على ما يبدو بناءً على حالة اللعبة الدقيقة. تسمح طريقة JIT بالتعامل مع هذا النهج في الوقت الفعلي بشكل أساسي. كما تتيح طريقة JIT للمحاكي تحسين الكود المعاد تجميعه للاستفادة من نظام المضيف قدر الإمكان.

أنا لست مبرمجًا، ولكن حتى من وجهة نظري، يبدو أن JIT أداة قوية للغاية عند تطبيقها على مشكلة المحاكاة الصعبة، بناءً على ما قرأته.

لماذا لا تسمح شركة Apple بـ JIT؟

لسوء الحظ، هناك نوع آخر من البرامج التي يمكنها الاستفادة بشكل كبير من JIT والتعديل الذاتي للكود وهو البرامج الضارة. إذا كان بإمكان التطبيق إنشاء وتنفيذ الكود أثناء وقت التشغيل، فهذا يفتح الباب لجميع أنواع الحيل، لذا فإن تجميع كل الكود مسبقًا يجعل من الأسهل بكثير ضمان أمان الكود. من المحتمل أيضًا أن Apple لا تريد أن يكون هناك موقف حيث يغير التطبيق سلوكه بعد الموافقة عليه. وهو أمر لا يمكن أن يحدث إذا كان الكود المجمّع مسبقًا ثابتًا.


التأثير المترتب على ذلك هو أن البرامج التي تعتمد على إعادة تجميع JIT للعمل بسرعات قابلة للاستخدام لن تتم الموافقة عليها لمتجر التطبيقات. هذا هو السبب المذكور غياب محاكي الدولفين الشهير.

بالطبع، هناك بديل لمعيد التجميع JIT، يسمى “المترجم”، ولكن هذا البديل أبطأ عدة مرات من طريقة JIT. لذا، على الرغم من أنه سيعمل، إلا أنه لن يكون قابلاً للتشغيل. إما أن ننتظر حتى iPhone 30 لتشغيل المترجم بسرعة كافية، أو علينا أن نأمل أن تخفف Apple من قيودها قليلاً.

لا يزال من الممكن أن تتغير الأمور

لا يزال مشهد المحاكاة على متجر التطبيقات الرئيسي في بداياته. قد تقرر شركة Apple تخفيف هذا الشرط بالنسبة للمحاكيات، أو تعديل سياساتها لضمان مستوى كافٍ من الأمان لهذه التطبيقات. ومن المرجح أن يتم التوصل إلى حل بين أولئك الذين يوافقون على التطبيقات وأولئك الذين يطورونها.


بالطبع، لا توجد هذه المشكلة بالنسبة لأولئك الذين يقومون بكسر الحماية لأجهزتهم، مما يسمح لهم بتحميل أي كود يحلو لهم. ومع ذلك، لا أوصي أي شخص بفعل ذلك دون سبب وجيه للغاية، وبالنسبة لمعظم الأشخاص، فإن سلبيات كسر الحماية ببساطة لا تستحق القدرة على لعب الألعاب القديمة على أجهزتهم.

أضف تعليق