LLVMJIT / CompilerRPCS3Clang

إذا دخلت إعدادات RPCS3 وشفت خيارات مثل PPU LLVM أو SPU LLVM، فـLLVM هنا ليس محاكيًا بحد ذاته. هو بنية وتقنيات Compiler تستخدم لتحويل الكود وتحسينه وإنتاج Machine Code مناسب لمعالج جهازك، وهذا بالضبط أحد الأسباب التي تجعله مهمًا في مشاريع المحاكاة.

?وش هو LLVM؟

LLVM هو مشروع مفتوح المصدر يوفر مجموعة أدوات ومكتبات لبناء Compilers وOptimizers وبيئات تشغيل. النواة الأساسية تتعامل مع تمثيل وسيط يسمى LLVM IR، ثم يمكن تحسين هذا التمثيل وتحويله إلى كود مناسب لمعمارية CPU المستهدفة.

الاسم LLVM لم يعد اختصارًا لاسم أطول؛ المشروع نفسه يستخدم LLVM كاسم رسمي. وهو أكبر من مجرد Compiler واحد.
كيف يعمل بشكل مبسط؟

تخيل LLVM كمرحلة وسطى ذكية بين الكود الذي يدخل إليه والكود الذي سيفهمه معالج جهازك. في حالة Compiler تقليدي مثل Clang تكون الصورة تقريبًا كالتالي:

SourceC / C++ وغيرها
Clangيفهم اللغة ويحللها
LLVM IRتمثيل وسيط موحد
Optimizerتحسين الكود
Machine Codex86-64 / ARM64 وغيرها
الفكرة المهمة للمستخدم: LLVM يعطي البرنامج طبقة قوية لإعادة ترجمة الكود وتحسينه بدل تنفيذ كل تعليمة واحدة بواحدة بطريقة Interpreter أبطأ.
المكونات اللي تشوف أسماءها كثير
LLVM Coreالنواة التي تتعامل مع LLVM IR والتحسين وتوليد الكود للمعماريات المختلفة.
ClangFront-end مشهور لـC وC++ وObjective-C، ويحول الكود إلى LLVM IR ثم يستخدم LLVM لإنتاج الكود النهائي.
LLDLinker تابع لمشروع LLVM لربط الملفات الناتجة وبناء البرنامج النهائي.
libc++مكتبة C++ القياسية التابعة للمشروع.
LLDBDebugger ضمن منظومة LLVM.
MLIRبنية Intermediate Representation متعددة المستويات لمجالات وأنواع عتاد مختلفة.
🎮وش علاقته بالمحاكيات؟

المحاكي أحيانًا يحتاج يحول تعليمات المعالج الأصلي للجهاز إلى تعليمات يفهمها معالج الكمبيوتر الحالي. هنا يدخل مفهوم JIT Recompiler: بدل ما يفسر كل تعليمة بشكل منفصل، يجمع أجزاء من الكود ويعيد ترجمتها إلى Machine Code أصلي يمكن تشغيله مباشرة على CPU المضيف.

LLVM يوفر بنية جاهزة للتحسين وتوليد Machine Code لعدة معماريات، لذلك يستطيع مشروع محاكاة استخدامه كجزء من Recompiler بدل كتابة Backend كامل لكل معمارية من الصفر.
PS3ليش نشوف PPU LLVM وSPU LLVM في RPCS3؟
PPU LLVM

يستخدم LLVM ضمن Recompiler الخاص بكود PPU في PlayStation 3 لتحويل التعليمات إلى كود مناسب للمعالج المضيف مع الاستفادة من التحسينات.

SPU LLVM

الفكرة نفسها لكن مع وحدات SPU الخاصة بمعالج Cell. RPCS3 ما يزال يطور باستمرار هذا المسار ويضيف تحسينات خاصة بـx86-64 وARM64.

اختيار LLVM لا يعني أن الأداء سيكون دائمًا أعلى في كل حالة أو أن أي مشكلة سببها LLVM. الأداء والتوافق يعتمدون على اللعبة، إصدار RPCS3، المعالج، الـPatches ومشاكل المحاكي نفسها.
JITLLVM وInterpreter: وش الفرق للمستخدم؟
Interpreter

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

LLVM Recompiler

يعيد ترجمة مجموعات من التعليمات إلى Machine Code أصلي، ثم يعيد استخدامها. تكلفة الترجمة الأولية أعلى، لكن التنفيذ بعد ذلك يكون أسرع عادة.

23الإصدار الحالي

حتى سبتمبر 2026، أحدث إصدار رسمي منشور هو LLVM 23.1.1، وصدر في 8 سبتمبر 2026. المشروع ضخم ويضم LLVM وClang وLLD وLLDB وlibc++ وMLIR وOpenMP ومكونات أخرى داخل مستودع واحد.

مستخدم RPCS3 العادي لا يحتاج ينزل LLVM يدويًا فقط لأنه اختار PPU LLVM أو SPU LLVM. المحاكي يضم ويستخدم المكونات التي يحتاجها ضمن بنائه.
الخلاصة

لما تشوف كلمة LLVM داخل محاكي، فكر فيها كـمحرك إعادة ترجمة وتحسين للكود، وليس كخيار رسومي أو Patch للعبة. في RPCS3 تحديدًا وجود PPU LLVM وSPU LLVM مرتبط بكيفية تحويل كود PlayStation 3 إلى كود يستطيع معالج الكمبيوتر تشغيله بكفاءة.