- نوافذ 11 يقوم ARM بمحاكاة x86 وx64 باستخدام Prism (24H2)، مما يؤدي إلى تحسين الأداء واستخدام وحدة المعالجة المركزية.
- ليس كل شيء يتم محاكاته: السائقينتتطلب ملحقات shell والرمز الديناميكي المقيد نظام Arm64 الأصلي.
- هناك ضبط دقيق (ذاكرة التخزين المؤقت، CHPE، متعدد النواة، SMC) مما يزيد من التوافق في التطبيقات متضاربة.
- المسار الأمثل هو النقل إلى Arm64/Arm64EC مع VS 2022 ونشر الثنائيات الأصلية مع الحفاظ على التكافؤ.
إذا كنت قد اشتريت للتو جهاز كمبيوتر جديدًا مزودًا بمعالج Arm—مثل Copilot+ مع Snapdragon X—فمن المحتمل أنك تتساءل عن كيفية تشغيله تطبيقات x86 و x64 في ويندوز 11،XNUMX،XNUMX أرمينيا دون فقدان التوافق. يكمن الحل في المحاكاة المدمجة في النظام، ومؤخرًا في Prism، طبقة الترجمة الجديدة ويندوز 11 24H2 مما يعمل على تسريع وتحسين التجربة.
في هذا الدليل، ستجد شرحًا واضحًا لكيفية عمل المحاكاة، وحدودها، وأسباب رفض مُثبّت x64 الاستمرار أحيانًا. ستتعرف أيضًا على تعديلات التوافق غير المعروفة التي قد تُحدث فرقًا. أمثلة ملموسة على الفشل الحقيقي، مراجعة للتطبيقات التي تعمل بالفعل على Arm، ومسار الهجرة للمطورين الذين يريدون التجميع على Arm64 باستخدام Visual Studio أو LLVM.
ما هو المحاكاة على Windows 11 على Arm؟
يتضمن Windows 11 for Arm طبقة ترجمة تجعل من الممكن تشغيل تطبيقات x86 و x64 لم تتغير. مقارنة بين Windows ARM و x86
المحاكاة "شفافة": فهي جزء من نظام التشغيل ولا تتطلب أي تثبيت إضافي. داخليًا، يُجمّع المُحاكي في وقت التشغيل (JIT). كتل تعليمات x86/x64 إلى arm64تطبيق التحسينات لإنشاء أكواد أصلية جيدة. تحتفظ خدمة النظام بذاكرة مؤقتة لهذه الكتل المترجمة لكل وحدة، مما يُقلل بشكل كبير من تكلفة الترجمة عند إعادة فتح التطبيق.
عندما يتعلق الأمر بعمليات x86، تأتي طبقة WOW64 الشهيرة. وكما هو الحال في أنظمة x64، تسمح WOW64 بتشغيل ثنائيات x86 في بيئات 64 بت، وفي حالة Windows على Arm، تضيف أيضًا إعادة توجيه نظام الملفات والتسجيل من الضروري عزل عملية x86 بشكل صحيح. أما بالنسبة لـ x64، فالأمر مختلف: لا يوجد وسيط WOW64، ويستخدم Windows ملفات ثنائية للنظام بتنسيق ARM64X PE، والتي يمكن تحميلها إلى كلٍّ من عمليات arm64 وx64 من نفس الموقع، مما يتجنب عمليات إعادة التوجيه ويضمن وصولاً متسقًا إلى النظام.
هناك نقطة رئيسية: المحاكاة تغطي فقط كود وضع المستخدميجب تجميع برامج تشغيل وضع النواة، وملفات UMDF، والمكونات الأخرى المرتبطة بالنواة بشكل أصلي لـ Arm64. إذا كان التطبيق يعتمد على برنامج تشغيل غير موجود لـ Arm، فلن تتمكن المحاكاة من حفظ هذا الجزء.

Prism: طبقة الترجمة الجديدة لنظام التشغيل Windows 11 24H2
مع Windows 11 24H2 يأتي Prism، وهو المحاكي الجديد الذي يحل محل التكنولوجيا السابقة بـ تحسينات رئيسية في الأداء واستخدام وحدة المعالجة المركزيةتتحدث مايكروسوفت عن تحسينات تتراوح بين 10% و20% في نفس الوقت خردوات بعد تثبيت 24H2، ستلاحظ تحسنات في أوقات التحميل، وسلاسة واجهة المستخدم، واستهلاك الطاقة.
تم ضبط Prism بشكل ممتاز لمعالجات Qualcomm المكتبية، وخاصةً سلسلة Snapdragon X الموجودة في أجهزة Copilot+. تعتمد بعض التحسينات المتقدمة على قدرات أجهزة محددة، ولكن يتوفر Prism لأي جهاز متوافق مع Windows 11 على مدار الساعة طوال أيام الأسبوع على Arm، ويمثل مسار التعايش بين التطبيقات الأصلية والمحاكاة أثناء هذا التحول.
الفلسفة تذكرنا كثيرا بـ روزيتا 2 في ماك مع Apple Silicon: يتعلق الأمر بتوفير استمرارية لنظام x86-64 بينما يُصدر المطورون إصداراتهم الأصلية لـ Arm. مايكروسوفت واثقة من أن أداء Prism سيكون منافسًا، ومع نمو قائمة تطبيقات Arm64، ستنخفض الحاجة إلى المحاكاة بشكل طبيعي.
كيف يكتشف النظام المحاكاة وما يراه تطبيقك
عادةً لا "يعرف" تطبيق x86/x64 أنه يعمل على جهاز كمبيوتر بمعالج Arm إلا إذا استفسر عن واجهات برمجة تطبيقات محددة. إذا كنت تستخدم IsWow64Process2على سبيل المثال، يمكنك معرفة ما إذا كان يعمل بنظام WOW وما هي بنيته. إذا استفسرت عن تفاصيل وحدة المعالجة المركزية عبر واجهة برمجة التطبيقات، فسيعيد النظام البيانات من المعالج المُحاكي، وللتوافق، GetNativeSystemInfo يمكنه أيضًا توفير قيم افتراضية عند استدعائها من عملية تحت المحاكاة.
إذا كنت بحاجة إلى معرفة إمكانيات المضيف من أحد التطبيقات، فاستخدم الحصول على سمات نوع الآلة للتحقق من دعم النظام للمحاكاة وأنواعها. هذا هو المسار الذي توصي به مايكروسوفت لاتخاذ قرارات التوافق دون التسبب في أخطاء ناتجة عن افتراضات معمارية.
لماذا تفشل تطبيقات x64 أحيانًا في التثبيت وحالات أخرى تفشل فيها المحاكاة
سؤال شائع جدًا: "لديّ نظام تشغيل Windows 11 يعمل على مدار الساعة طوال أيام الأسبوع مع Prism، ومع ذلك يُخبرني مُثبّت x24 أن نظامي غير متوافق". حدث هذا، على سبيل المثال، لمستخدم لديه نطاق Mechdyne TGX على جهاز Surface Pro 11. عادةً ما يكون السبب هو برنامج التثبيت نفسه، الذي يُجري فحوصات البنية ويُعطّل النظام حتى قبل تشغيل الملف الثنائي للتطبيق. لا يعترض برنامج المحاكاة منطق ما قبل التثبيت هذا إذا قررت الحزمة "التخلص من نفسها".
هناك المزيد من السيناريوهات التي قد تفشل فيها المحاكاة أو لا تكون كافية: إذا كان التطبيق يعتمد على برامج تشغيل وضع النواة (غير مُحاكاة)، إذا كان يُحقن ملحقات shell أو أدوات IME التي يجب أن تتوافق مع بنية النظام، أو إذا كان المُثبِّت يتضمن مكونات تُحمَّل داخل عمليات النظام حيث لا يُمكن خلط البنى. في هذه الحالات، حتى مع إمكانية محاكاة الملف التنفيذي الرئيسي، فإن التبعيات تمنع اكتمال التثبيت.
هناك عقبة أخرى معروفة وهي سياسة أمان الكود الديناميكي. تعمل محاكاة تطبيقات x86 عن طريق توليد كود arm64 في الوقت الحقيقي. إذا أدت عملية x86 إلى تخفيف ProcessDynamicCodePolicy من خلال SetProcessMitigationPolicy لمنع إنشاء أو تعديل شيفرة JIT، لن يعمل تطبيق x86 مع محاكاة Arm64. الحل هو تعطيل هذه السياسة أثناء العملية.
أخيرًا، يفترض بعض المثبتين أنه إذا اكتشفوا WOW فإنهم في نظام x64 "الكلاسيكي" وفرض فرع x64 من حزمهم، والذي لا يمكن استخدامه بهذه الطريقة على Arm. يُعتبر هذا النمط ممارسة سيئة: يُنصح بعدم استنتاج البنية الأصلية من مجرد وجود WOW، والإشارة دائمًا إلى IsWow64Process2.

حليف غير معروف: حلول التوافق وإعدادات المحاكاة
يتضمن Windows on Arm مجموعة من ضوابط دقيقة للمحاكاة مما قد يزيد من التوافق على حساب الأداء. يمكنك تشغيل "مستكشف أخطاء توافق البرامج ومصلحها" من قائمة سياق .exe (انقر بزر الماوس الأيمن، ثم اختر "استكشاف أخطاء التوافق ومصلحها")، ثم اختر تجربة الإعدادات الموصى بها أو الإبلاغ عن المشكلة المرصودة.
إذا اخترت "استكشاف أخطاء البرنامج وإصلاحها"، فسترى خيارات مثل "كان يعمل في الإصدارات السابقة، ولكنه لا يعمل الآن"، أو "يفتح ولكنه يبدو سيئًا"، أو "يتطلب أذونات إضافية". تُطبّق العديد من هذه الخيارات تلقائيًا تعديلين فعالين للمحاكاة: تعطيل ذاكرة التخزين المؤقت للتطبيق (تجنب استخدام ذاكرة التخزين المؤقت للكتلة المترجمة) و تعطيل وضع التنفيذ الهجين (يعطل CHPE ويفرض الثنائيات x86 فقط).
بالإضافة إلى ذلك، في خصائص الملف القابل للتنفيذ، علامة التبويب التوافق، يظهر قسم محدد في Arm "Windows 10 على ARM" أو "Windows 11 على ARM" مع الزر "تغيير إعدادات المحاكاة"ومن هناك، يمكنك تطبيق مجموعات محددة مسبقًا أو تنشيط الخيارات المتقدمة بشكل فردي.
الخيارات الأكثر أهمية هي: تعطيل ذاكرة التخزين المؤقت للتطبيق (يفرض إعادة ترجمة كل شيء في كل تشغيل)، قم بتعطيل الوضع الهجين CHPE (مفيد عندما تؤدي الثنائيات المتوافقة مع x86+Arm64 إلى حدوث عدم توافق)، قم بتمكين حماية إضافية للضوء، يطلب التوافق الصارم مع الكود الذي يعدل نفسه ذاتيًا (يدعم المزيد من أنماط SMC على حساب الأداء) أو تعطيلها تحسين صفحة RWXتوجد أيضًا في تطبيقات x64 مفاتيح لمحاكاة النقطة العائمة x87 عند 80 بت لتحقيق أقصى قدر من الدقة، على حساب السرعة.
قسم استخدام النوى المتعددة يتيح لك هذا الخيار الاختيار بين "سريع" و"صارم" و"صارم للغاية" أو "فرض استخدام نواة واحدة". كلما كان الإعداد أكثر صرامة، زادت قيود الذاكرة المُطبقة للمزامنة، وقلّ خطر حدوث حالات تضارب دقيقة، ولكن على حساب انخفاض الأداء. إذا كان التطبيق غير مستقر مع خيار "سريع"، فجرّب خيار "صارم". إذا حلّ خيارٌ مُحدد مشكلتك، تُشجعك مايكروسوفت على إرسال ملاحظاتك إلى [البريد الإلكتروني محمي] لدمجها في المحاكي.
أفضل الممارسات في WOW والاكتشافات: كيفية تجنب الافتراضات الخاطئة
تنشأ العديد من المشاكل من افتراضات خاطئة عند اكتشاف WOW. لا ينبغي للتطبيق الذي يكتشف أنه يعمل بنظام WOW أن يستنتج أن المضيف هو x64 كلاسيكي: على Arm، يعني هذا الشرط المحاكاة، و وجهات نظر التسجيل، فإن وجود الأطر ومسارات النظام لا يعادل تلك الموجودة في جهاز كمبيوتر x86-64.
الأخطاء الشائعة: تثبيت البرنامج بالقوة إصدار x64 عند اكتشاف WOW، ابحث عن المفاتيح في العرض "الأصلي" للسجل بدلاً من استخدام واجهات برمجة التطبيقات المجردة، أو افترض توفر .NET 64 بت على المضيف. يُنصح بالاستعلام عن IsWow64Process2، واستخدام دوال Windows التي تحل المسارات بشكل صحيح، وتجنب التعليمات البرمجية التي تعتمد على بنية عملية المضيف.
برامج التشغيل، وملحقات Shell، والمحاكاة الافتراضية: عندما تحتاج إلى Arm64 الأصلي
يجب تجميع أي برنامج تشغيل يلمس النواة - برامج تشغيل وضع النواة، وUMDF، وبرامج تشغيل الطباعة - على النحو التالي: Arm64 الأصليلا يوجد محاكاة في النواة. يؤثر هذا على سيناريوهات مثل المحاكاة الافتراضية أو التطبيقات التي تُثبّت برامج تشغيل الالتقاط، أو برامج مكافحة الفيروسات منخفضة المستوى، أو مرشحات الملفات.
يجب أن تكون ملحقات Shell، وأدوات IME، والتقنيات المساعدة التي تُحمّل مكتبات DLL ضمن عمليات Windows مناسبةً لبنية النظام. إذا كان تطبيقك يُسجّل مكتبات DLL x86 للتكامل مع Explorer، في Arm سوف تحتاج إلى إعادة تجميعها إلى Arm64.
في الأجهزة الافتراضيةهناك قيود على مجموعة الشرائح. على سبيل المثال، منصة Windows Hypervisor غير مدعومة. منصة كوالكوم 835لذا، لن يعمل Hyper-V هناك. تُشير مايكروسوفت إلى أنها تُواصل الاستثمار في توسيع التوافق للأجيال القادمة.
نصائح عملية للمستخدمين: التثبيت والاختبار والحل
أولاً، تأكد من أنك تستخدم نظام التشغيل Windows 11 24H2، كما هو الحال Prism يعزز الأداء وإصلاح عدم التوافق. إذا لم يعمل مُثبِّت x64، فابحث عن إصدار Arm64 أصلي أو إصدار MSIX/Store: تُقدِّم العديد من التطبيقات الحديثة بالفعل حزمًا متعددة المنصات تُحدِّد البنية الصحيحة. إذا كان نظامك يحتوي على برامج مُحمَّلة مسبقًا، فتعلَّم كيفية إزالة التطبيقات المثبتة مسبقًا والبرامج غير الضرورية لتبسيط عمليات التثبيت والتشخيص.
إذا كان لديك مُثبِّت x86/x64 فقط، فحاول تشغيل مُحَلِّل التوافق وضبط المُحاكاة (تعطيل ذاكرة التخزين المؤقت، تعطيل CHPE، زيادة صرامة تعدد الأنوية). إذا كان التطبيق يتطلب سائق أو حقن ملحقات shell، فمن المحتمل أنك تحتاج إلى إصدار خاص بـ Arm64 من تلك المكونات.
لتحديد ما إذا كان التطبيق سيعمل أم لا، يحتفظ المجتمع بكتالوجات مثل "Windows على ARM" التي تشير إلى ما إذا كان التطبيق يعمل أم لا. دعم كامل، يعمل مع Prism أو غير متوافق. ليس رسميًا وقد يصبح قديمًا، ولكنه مرجع مفيد قبل الشراء أو الترحيل.
إذا كنت بحاجة إلى استخدام برنامج بالغ الأهمية لا يوفر مسار Arm على المدى القصير، ففكر في البدائل: عمليات بناء الويب التدريجية، أو إصدارات UWP أو العملاء المكافئين، أو حتى تشغيل البرنامج على آلة افتراضية بعيدة أو سطح مكتب بعيد x86-64 والوصول إليه من جهاز الكمبيوتر Arm الخاص بك حتى وصول المنفذ الأصلي.
التطبيقات التي تعمل بالفعل على Arm: ما يمكنك تثبيته اليوم
ينمو الكتالوج بسرعة. قامت مايكروسوفت بنقل تطبيقاتها الأساسية (Teams، كلمة(مثل Excel وOutlook وPowerPoint)، كما يتوفر دعم أصلي للمتصفحات والأدوات الشائعة. مع نظامي التشغيل Windows 11 24H2 وCopilot+ PC، يتوفر الآن لمتصفح Chrome إصدار Arm، كما يتم دعم مشروع Chromium الأساسي أيضًا، مما يفتح الباب أمام معظم المتصفحات المشتقة.
في الإبداع والإنتاجية هناك خيارات ناضجة: أدوبي فوتوشوب و لايت روم تتوفر إصدارات Arm، وأعلنت Adobe عن إصدارات أصلية من Premiere Pro وIllustrator. يمكنك أيضًا العمل مع Blender، ومجموعة Affinity (Designer، Publisher، Photo)، GIMPأو LibreOffice أو حتى DaVinci، والتي تغطي كل شيء من تنقيح الصور إلى التحرير والنمذجة.
بالنسبة للوسائط المتعددة والخدمات، العملاء مثل VLC, Netflix، Disney + ، Spotify أو Prime Video يعملان على معالج Arm، إما كتطبيقات أصلية أو من خلال المتجر. يتيح هذا النظام البيئي الأصلي أداءً أفضل واستهلاكًا أقل للبطارية للمهام اليومية مقارنةً بالمحاكاة.
التاريخ الحديث: من محاكاة x86 في Windows 10 إلى x64 وPrism
في نظام التشغيل Windows 10 لمعالجات Arm، اقتصرت المحاكاة على تطبيقات x86 ذات 32 بت. لاحقًا، أضافت Microsoft محاكاة x64 في القنوات الداخلية (على سبيل المثال، الإصدار 21277)، تم تحقيق قفزة أساسية نحو تشغيل البرامج التي تخلت بالفعل عن دعم 32 بت.
مع نظام التشغيل Windows 11، يتم دمج محاكاة x64 ويقدم 24H2 Prism، الذي يجلب ترجمة أسرع ونهجٌ شبيهٌ بروزيتا ٢: استمراريةٌ سلسةٌ مع انتقال النظام البيئي إلى ثنائيات Arm2. في العديد من السيناريوهات، يكون الأداء المُحاكي جيدًا بما يكفي للاستخدام اليومي، مع أن الهدف سيكون دائمًا الثنائي الأصلي.
مسار المطور: جلب تطبيقك إلى Arm64 (وArm64EC)
على الرغم من أن Prism يساعدك في التخلص من المشكلة، فإن نقل التطبيق إلى Arm64 يوفر أوقات تشغيل أفضل. حذاء، انخفاض الاستهلاك والوصول إلى وحدة المعالجة المركزية ووحدة معالجة الرسومات ووحدة المعالجة العصبية مُحسَّن. المسار سهل مع Visual Studio 2022 (الإصدار 17.4 أو أحدث)، الذي يدعم بشكل أصلي بناء مشاريع Arm64 وتصحيح أخطائها على أجهزة Arm. يمكنك أيضًا استخدام Visual Studio 17.10 Preview وLLVM/Clang 12+ إذا كنت تفضل هذه السلسلة من الأدوات.
الخطوات الأساسية: إضافة تكوين Arm64 إلى حلك (مدير التكوين، نسخ منصة Arm64 الجديدة من x64)، أعد التجميع، أصلح أخطاء التبعية، واختبر على أجهزة Arm أو في جهاز افتراضي يعمل بنظام Windows يعمل بنظام Arm باستخدام تصحيح الأخطاء محليًا أو عن بُعد. للتحقق من الملف الثنائي، شغّل dumpbin /headers .\<appname>.exe والبحث في FILE HEADER VALUES عن السلسلة آلة AA64 (ARM64).
بعد التحقق من صحة البيانات، يُمكن تجميعها واختبارها تلقائيًا على Arm (CI/CD). للنشر، أضف حزمة Arm64 إلى متجر Microsoft أو إلى قناة MSI/EXE/MSIX. إذا كنت تُوزّعها من الويب، يُمكنك استخدام تلميحات العميل لوكيل المستخدم لاكتشاف أجهزة Windows على Arm وتقديم المثبت المناسب لها، بدلاً من الاعتماد على سلسلة وكيل المستخدم الكلاسيكية.
التبعيات التي تحجب المنفذ هي أكثر العوائق شيوعًا. لديك عدة خيارات: إعادة التجميع المكتبات الداخليةاطلب إصدارًا من Arm64 من جهة خارجية، أو راجع vcpkg للإصدارات المنقولة بالفعل، أو حتى ساهم في دعم Arm لهذه المشاريع بنفسك. يوفر Linaro خدمة دعم لتسريع المنافذ في بيئة Arm إذا كنت بحاجة إليها.
إذا لم يكن من الممكن ترحيل كل شيء إلى Arm64 مرة واحدة، ففكر في أرم64 إي سي: يسمح لك بتجميع تطبيقك الرئيسي لـ Arm64 مع الاستمرار في استخدام تبعيات x64 التي ستعمل تحت المحاكاة ضمن العملية نفسها. لا يُمكن دمج تبعيات Arm64 الصرفة في عملية Arm64EC التي تتوقع x64، ولكنه قد يكون مفيدًا جدًا كتحويل.
لا تنسَ الكود الخاص بالبنية: يجب إعادة كتابة مكونات وحدة المعالجة المركزية والمُجمِّع المضمَّن لـ Arm أو تغليفه خلف طبقات محمولة. وإذا كان تطبيقك تثبيت برامج التشغيل، ستحتاج إلى تجميع برامج التشغيل هذه بشكل أصلي لنظام Arm64 باستخدام WDK؛ ولا توجد اختصارات مع المحاكاة داخل النواة.
تتضمن الأدوات والأطر المدعومة .NET 7 و 6 (LTS)، و.NET 5.0.8+، و.NET Framework 4.8.1، و كلانج-سي إل (واجهة برمجة تطبيقات متوافقة مع MSVC). بالنسبة للمُثبِّتين، تدعم أطر العمل مثل WiX وSquirrel وInno Setup وInstallAware نظام Windows على Arm دون أي مفاجآت. رتِّب لتحقيق تكافؤ وظيفي بين البنى لتجنب إرباك المستخدم.
إذا واجهتك مشكلة، تقدم لك Microsoft خدمة استشارات App Assure Arm للمساعدة في تحسين الأداء وحل الأعطال. ومن أفضل الممارسات، الحفاظ على توافق الإصدارات وأتمتة الاختبارات على نظام Arm لتجنب تعطل التوافق في الإصدارات المستقبلية.
كاتب شغوف بعالم البايت والتكنولوجيا بشكل عام. أحب مشاركة معرفتي من خلال الكتابة، وهذا ما سأفعله في هذه المدونة، لأعرض لك كل الأشياء الأكثر إثارة للاهتمام حول الأدوات الذكية والبرامج والأجهزة والاتجاهات التكنولوجية والمزيد. هدفي هو مساعدتك على التنقل في العالم الرقمي بطريقة بسيطة ومسلية.